Thursday, May 14, 2009

(转)gdb –annotate=

转自:http://blog.163.com/zhang7410@126/blog/static/233564612008338548800/

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

No comments:

Post a Comment

Insist On

English words
Go to bed at 23:30

About Me

Gtalk:l0he1g at gmail
Location:Beijing,China