Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117140
  • 博文数量: 24
  • 博客积分: 1411
  • 博客等级: 上尉
  • 技术积分: 261
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-07 17:49
文章分类

全部博文(24)

文章存档

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。

阅读(698) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~