2011-06-01 19:33:51| 分类:Emacs|字号 订阅
Emacs中使用gdb命令调试,然后用
gdb --annotate=0 myprog.exe 启动gdb进入gud-mode ,
不同的annotate 的值不代表不同的模式
annotate = 0是最基本的模式和在命令行使用gdb完全一样。
annotate = 1是单步调试模式,出现上下两个窗口,上面是gdb运行的buffer,下面是你代码的buffer,会在代码 buffer中,同步指示当前运行的语句的位置。
annotate = 3是信息最完整的模式,会进入一个多窗口界面同时显示6个窗口分别是gdb-buffer, locals-buffer(局部 变量),source-buffer,inferor I/Obuffer(正在调试程序的IO),stack-buffer,breakpoint-buffer.
无论上面的那种情况,都出现了一个现象:程序的输出不能显示,只有在程序退出的时候才显示出来。这样是非常不方便的。
GUD/GDB mode:
M-x gdb --annotate=3 test ;;进入gdb
如果没有进入graphical mode可以 M-x gdba 然后输入你要debug的file
C-x : set breakpoint ;;可以直接点击旁边的fringe set/clear 断点
C-c C-l : clear breakpoint
C-c C-s : step(step one line code but stop in function)
C-c C-n : next(step one line code but stepping across function)
C-c C-i : stepi(Execute a single machine instruction)
C-c C-r : continue(感觉还是直接按go按钮吧)
C-c C-d : Delete the breakpoint(s) on the current source line
其他:
1. 如果更改了gdb的window 可以用: M-x gdb-restore-windows 恢复
在breakpoint buffer上:
2 Return : gdb-goto-breakpoint (即转到source对应的行)
3.D : gdb-delete-breakpoint
4.Space : Enable/disable the current breakpoint (`gdb-toggle-breakpoint')
5: 可以将鼠标放到一个variable上, 然后点击toolbar上的watch就可以watch a expression了
这是varibale显示在 speedbar中:
return: To expand or contract a complex data type
D : To delete a complex watch expression
space : To edit a variable with a simple data type
6: C-x C-a C-l : refresh a buffer