GDB调试时,需要结合源码分析问题和堆栈,如何在GDB中查看源码,本文将给出方法。
1 指定源码路径
某些时候,用-g 编译过后的执行程序中只是包括了源文件的名字,没有路径名。GDB 提供了可以让你指定源文件的路径的命令,以便 GDB 进行搜索。
directory <dirname ... >
dir <dirname ... >
加一个源文件路径到当前路径的前面。如果你要指定多个路径,UNIX 下你可以使用“:”,Windows 下你可以使用“;”。
directory
不跟任何值,清除所有的自定义的源文件搜索路径信息。
show directories
获取定义了的源文件搜索路径。
2 显示源代码
GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后,GDB 会报告程序停在了那个文件的第几行上。可以用 list 命令来打印程序的源代码,常见看源代码的 GDB 命令:
list <linenum>
显示程序第 linenum 行的周围的源程序。
list <function>
显示函数名为 function 的函数的源程序。