目前我自己最喜欢的还是 ddd 、 gdbgui 和 vim-vebugger插件或vimgdb插件 三种。
You could try using Insight a graphical front-end for gdb written by Red Hat Or if you use GNOME desktop environment, you can also try Nemiver.
kdbg is a graphical user interface to gdb, the GNU debugger.
ddd is a graphical front-end to gdb that is pretty nice. One of the down sides is a classic X interface, but I seem to recall it being pretty intuitive.
vim-vebugger 插件或 vimgdb 插件,也可以试试。
推荐使用 nemiver。insight 是 redhat 下的,ubuntu里没有更新。 ddd也不错。看自己喜好。
更推荐使用 gdb dashboard 或者 gdbgui,前者是对字符终端的重定向组合,后者是python实现的web方式的调试前端(我现在正在用的,在我的机器上,用chrome浏览器才能调式)。
https://github.com/cyrus-and/gdb-dashboard
https://github.com/cs01/gdbgui 我现在正在用的(在我的机器上,用chrome浏览器才能调式)
https://github.com/snare/voltron 这个可能比 gdb dashboard 还好
除了gdb dashboard之外,以下网址还提供了其它的front end(包括给gdb dashboard上色):
https://stackoverflow.com/questions/209534/how-to-highlight-and-color-gdb-output-during-interactive-debugging/522192
Nemiver的安装:
基于Debian发行版,它的安装时非常直接简单,如下:
$ sudo apt-get install nemiver
在Fedora中安装如下:
$ sudo yum install nemiver
在Arch Linux中安装如下:
$ sudo pacman -S nemiver
Nemiver 是一款基于 GTK+ 的用于C/C++程序的图形化的独立调试器,它以GDB作为其后端。最令人赞赏的是其速度和稳定性,Nemiver是一个非常可靠,具备许多优点的调试工具。最令人欣慰的是,它能够很好地与GNOME环境像结合。
kdbg简单使用:
ubuntu下 直接 sudo apt-get install kdbg 即可安装.
若启动后出现 MNG error 11: Function is invalid at this point; chunk MHDR; subcode 0:0 错误, 那么就删除 /usr/share/kde4/apps/kdbg/icons/hicolor/22x22/actions/pulse.mng 这个文件就好了.
界面比较友好. 调试方法很简单:
1.首先g++ -g file.cpp 或 g++ --debug file.cpp 得到文件a.out
2.运行Kdbg选择 File->Excutable 再选中a.out 这个文件,调试代码会自动载入.
3.鼠标点调试代码最左边点空白处,变红色则设置了断点,
4.按F5开始调试 F10单步 F6跳出 F7到鼠标 F8跟进。View->Locals可看变量数据。
ddd的问题之一: (为什么我的 ddd 需要 root 权限才能显示源码,即便 sudo 也不能显示源码,只有 su 之后在root下才能显示源码?)
运行DDD调试器时,出现卡死现象,看软件状态,发现"waiting until GDB gets ready"。 解决办法:
用vim编辑文件 ~/.ddd/init, 将 set extended-prompt not set\n\ 这行 改成: set extended-prompt (gdb) \n\ 问题解决。
1、gdb 调式子进程:
set follow-fork-mode child
2、gdb打印预定义的宏macro的方法:
必须同时使用以下几个编译选项才能打印:
-g:
Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information. On most systems that use stabs format, -g enables use of extra debugging information that only GDB can use; this extra information makes debugging work better in GDB but probably makes other debuggers crash or refuse to read the program. If you want to control for certain whether to generate the extra information, use -gstabs+, -gstabs, -gxcoff+, -gxcoff, or -gvms (see below).
-ggdb:
Produce debugging information for use by GDB. This means to use the most expressive format available (DWARF 2, stabs, or the native format if neither of those are supported), including GDB extensions if at all possible.
-gvmslevel: (示例: -g3, 要打印macro,请使用 -g3)
Request debugging information and also use level to specify how much information. The default level is 2. Level 0 produces no debug information at all. Thus, -g0 negates -g.
Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use -g3.
然后在gdb中使用:
info macro YOUR_MACRO 或者
macro expand
YOUR_MACRO
查看相应的macro。