2009年(24)
分类: C/C++
2009-08-07 18:05:34
首先,一般不像CSAPP里说的那样直接用 gcc -o prog prog.c 创建prog再gdb prog,这样不加 -g 参数编译出的东西里没有调试信息。一般先用s命令进行C源码级调试,关键地方再用stepi这样的命令进行汇编级调试。
通常调试程序的步骤
* 启动 gdb * 设置一个或多个断点
* 用r命令运行程序
* 断点处用p命令或display命令显示变量
* 用c命令继续 * 找到错误 * 打开另一个窗口,修正错误,编译,运行
* 还有错?在gdb窗口 kill ,再用r命令启动新程序(gdb会自动找到新程序)。
走到断点后,先display你想看的变量,然后用s命令单步执行,每次执行后会自动把上次display的变量刷新(相反,p命令只显示一次)
遇到printf之类的函数,不用s单步执行,这样会进到printf里,用n 命令 执行整个printf。