现在这行得通,但它很丑陋,而且当你需要做很多事情时也不太友好。
(gdb) break diff_match_patch<std::__1::basic_string<wchar_t, std::__1::cha
r_traits<wchar_t>, std::__1::allocator<wchar_t> >, diff_match_patch_traits
<wchar_t> >::diff_linesToCharsMunge
Breakpoint 4 at 0x100021a1c: file diff_match_patch.h, line 658.
(gdb)
我可以从行号设置断点。这可能是我大部分时间都会诉诸的,因为:
要用函数名设置断点,如果碰巧在一堆模板下面(比如继承STL容器的类... grumble grumble),你必须经历这个磨难才能得到它的邪恶签名为了打破一个功能。
以下是我能够完成它的方法,在我的 OS X 10.8.4 上,您break
在 gdb 提示符下键入,然后开始使用前缀(在本例中是 diff_match_patch,类的名称),然后尝试制表符完成。此时我使用 tmux 的搜索模式来隔离diff_linesToCharsMunge
函数的签名(
现在我想让它变得更好一些,但我不知道怎么做。我想通过留在命令行来保持事情的清洁和健壮。
我认为如果我想要一个漂亮(且友好)的 GUI 界面,一个好方法是在 XCode 项目中设置此代码并从那里开始。
但是,如果我想采用更多的核心 UNIX 风格方法,我有哪些选择呢?
gdb 是可靠的,当然(我很高兴它似乎与我的 clang 编译的 C++11 代码无缝工作),但它缺乏很多细节,比如我们从 eg中得到的ipython
。ipython 有完整的语法高亮!clang 编译器产生漂亮的颜色和超级友好的(gcc
至少参见)错误和警告。用甜蜜的波浪线向您展示令人反感的表情部分!gdb
相比之下,只是感觉牙齿长了。
所以我只是想让这项工作少一点……痛苦。需要改进的地方...
- 从函数签名的中间进行选项卡完成搜索,这样我就可以在键入函数的合理人类已知名称后进行选项卡
- 实际上,#1 总结了它,但是任何可以做其他事情的可行解决方法(行号就是其中之一,我猜......叹息)都是受欢迎的。你知道,我希望
clang
项目可能有一些史诗般的功能丰富的 gdb 前端。