gdb 运行到下一个断点_Unix 环境编程工具(3)——gdb

Unix 环境编程工具(1)——GCC

Unix 环境编程工具(2)——Make

我们编写的程序可能会出现 bug。尽管找出这些 bug 的方法很多,但是好的调试器会让这个工作更容易。多数有一定规模的程序,都不可能盯着源代码就找出 bug,我们需要程序运行时的线索来找到 bug。因此花点时间来学习调试器是值得的。

GDB

1c0fee7a1cf24749c8819f2292b5e19f.png

我们推荐 gdb(GNU debugger),因为它可以很好和 gcc 编译器结合。尽管 gdb 没有图形界面,它仍然是强大的工具,可以给熟悉它的程序员提供需要的信息。

这一部分没有完全覆盖 gdb 的所有功能,但是会讲到重要的内容。gdb 有在线帮助文档,可以查询有用的命令。

启动 gdb

和 make 一样,有两种方式调用 gdb,可以在 shell 中启动,只需要输入 gdb 需要调试程序名

gdb program

如果不指定文件名,gdb会直接启动,然后启动后可以指定一个需要调试的文件,再继续调试;我们也可以在 emacs 中调用 gdb,[Esc]-x gdb 。

运行 gdb

gdb 启动后会加载调试程序的符号表(变量名、源代码文件等信息)。这个符号表是 gcc 编译器 -g 选项生成的映射。调试器是交互式的程序,开始后会提示我们输入命令,最常用的命令有:设置断点,单步调试,断点继续,检查变量值等。

调试策略

有的人不想多学习一个工具而避免使用调试器。这样是不正确的,花点时间来学习调试器吧,它会让你更加高效地找到问题。

有时bug导致的崩溃会让你的程序停止并输出类似“Segmentation Violation”的内容。如果你的程序这样崩溃了,调试器可以捕获处理器发出的错误信号,让你可以检查程序的状态。很多时候,调试器可以告诉你程序崩溃时的状态。

bug 也可能不会直接导致崩溃,但是会导致程序的内部问题。这种情况下,在程序异常的地方断点调试,然后可以查看到断点的数据和控制路径,什么情况会导致异常。

另一种方式时在程序异常前设置断点,然后继续向出现异常的地方执行,逐步检查问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值