在一中提到GDB最最基本的用法,在本节主要讲述一下如何让GDB在断点处打印一下诊断信息,但程序执行本身不会中断。
先稍微改一改源程序
#include#include int main(int argc, char** argv) { int i = 0; printf("hello,world\n"); for ( i = 0; i < 20; i++ ) { printf("now, the seq is %d\n",i); } return 0;}
假设要在执行期间查看i值的变化。如果是step by step的办法,具体步骤如下。
设置断点
gdb)break 8
执行程序
gdb)run
在断点处停止执行,执行如下指令显示i的值
gdb)p i
继续程序执行
gdb)continue
上述步骤会一直重复出现,如果想一次性设定后,让程序执行不因断点设置而中断,可采用下述办法。
gdb)commands
Type commands for breakpoint(s) 1, one per line.End with a line saying just "end".>silent>p i>conti>end
输入end表示在断点处的批处理结束,再次回到gdb。
p i 表示指印i的值
conti 表示继续程序执行
gdb)run
这样每次在断点处会自动打印变量i的值,并继续执行剩下的程序。