Linux 中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C 和 C++程序,功能不亚于Windows 下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb 提供了以下功能: # 监视程序中变量的值 # 在程序中设置断点 # 程序的单步执行 在使用gdb 前,必须先载入可执行文件,因为要进行调试,文件中就必须包含调试信息,所以在用gcc 或 cc 编译时就需要用-g 参数来打开程序的调试选项。 调试开始时,必须先载入要进行调试的程序,可以用以下两种方式: * 在启动gdb 后执行以下命令: file 可执行文件路径 * 在 gdb 启动时就载入程序: gdb 可执行文件路径 载入程序后,接下来就是要进行断点的设置,要监视的变量的添加等工作,下面对在这个过程中常会用到的命令逐一进行介绍: * list:显示程序中的代码,常用使用格式有: list 输出从上次调用list 命令开始往后的10 行程序代码。 list - 输出从上次调用list 命令开始往前的10 行程序代码。 list n 输出第n 行附近的10 行程序代码。 list function 输出函数function 前后的10 行程序代码。 * forward/search:从当前行向后查找匹配某个字符串的程序行。使用格式: forward/search 字符串 查找到的行号将保存在$_变量中,可以用print $_命令来查看。 * reverse-search:和forward/search 相反,向前查找字符串。使用格式同上。 * break:在程序中设置断点,当程序运行到指定行上时,会暂停执行。使用格式: break 要设置断点的行号 * tbreak:设置临时断点,在设置之后只起作用一次。使用格式: tbreak 要设置临时断点的行号 * clear:和break 相反,clear 用于清除断点。使用格式: clear 要清除的断点所在的行号 * run:启动程序,在run 后面带上参数可以传递给正在调试的程序。 * awatch:用来增加一个观察点(add watch),使用格式: awatch 变量或表达式 当表达式的值发生改变或表达式的值被读取时,程序就会停止运行。 * watch: 与 awatch 类似用来设置观察点,但程序只有当表达式的值发生改变时才会停止运行。使用格 式: watch 变量或表达式 需要注意的是,awatch 和 watch 都必须在程序运行的过程中设置观察点,即可运行run之后才能设置。 * commands:设置在遇到断点后执行特定的指令。使用格式有: commands 设置遇到最后一个遇到的断点时要执行的命令 command...