Linux Programming, Language C 2 – GDB

我们在上一篇提到了GNU编译器 – GCC。
GCC用于编译程序,而Linux的另一个GNU工具gdb则用于调试程序。

GDB调试器

GNU侦错器(GNU Debugger,缩写:GDB),是GNU软件系统中的标准侦错器,此外GDB也是个具有移携性的侦错器,经过移携需求的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB,而现有GDB所能支持除错的编程语言有C、C++、Pascal以及FORTRAN。
GDB具备各种侦错功效,能针对计算机程序的运行进行追踪与警告,使用GDB的除错人员可以监督及修改程序的内部变量值,甚至监督与修改独立于主程序运作外,以独立个体型态调用(调用使用)的函数。

和所有常用的调试工具一样,gdb提供了以下功能:
1.监视程序中变量的值
2.在程序中设置断点
3.程序的单步执行

和GCC一样,GDB也是用命令来完成的。

最常用的命令如下:

示例:

部分命令详解
list命令:
list命令用于列出源代码。

根据列出的源程序,如果我们将断点设置在第5行,只需在gdb命令行提示符下键入如下命令设置断点:(gdb) break 5。
这个时候我们再run,程序会停止在第5行。
设置断点的另一种语法是 break ,它在进入指定函数(function)时停住。

相反的,clear用于清除所有的已定义的断点,clear 清除设置在函数上的断点,clear 则清除设置在指定行上的断点。

watch命令:
watch命令用于观查变量或表达式的值,我们观察sum变量只需要运行watch sum。

watch 为表达式(变量)expr设置一个观察点,一量表达式值有变化时,程序会停止执行。
要观查当前设置的watch,可以使用info watchpoints命令。

next、step命令:
next、step用于单步执行,在执行的过程中,被watch变量的变化情况将实时呈现(分别显示Old value和New value)。
next、step命令的区别在于step遇到函数调用,会跳转到到该函数定义的开始行去执行,而next则不进入到函数内部,它把函数调用语句当作一条普通语句执行。

参考资料
Linux下的C编程实战 – ITEYE

如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: Linux Programming, Language C 2 – GDB

知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
支付宝捐赠
anyShare分享到:

发表回复