Fedora经过长时间的发展,对Fedora proc源代码在这里发表一下个人理解,和大家讨论讨论GDB 可以打印出所调试程序的Fedora proc源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的Fedora proc源代码。还是来看一看查看源代码的GDB命令吧。
显示源代码
GDB 可以打印出所调试程序的Fedora proc源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的Fedora proc源代码。还是来看一看查看源代码的GDB命令吧。
list
list
list显示当前行后面的源程序。
list -显示当前行前面的源程序。
一般是打印当前行的上5行和下5行,如果显示函数是是上2行下8行,默认是10行,当然,你也可以定制显示的范围,使用下面命令可以设置一次显示源程序的行数。
set listsize
show listsize查看当前listsize的设置。
list命令还有下面的用法:
list
list ,
list +往后显示源代码。
一般来说在list后面可以跟以下这们的参数:
搜索源代码
不仅如此,GDB还提供了Fedora proc源代码搜索的命令:
forward-search
reverse-search
其中,
指定源文件的路径
某些时候,用-g编译过后的执行程序中只是包括了源文件的名字,没有路径名。GDB提供了可以让你指定源文件的路径的命令,以便GDB进行搜索。
directory
show directories显示定义了的源文件搜索路径。
源代码的内存
你可以使用info line命令来查看Fedora proc源代码在内存中的地址。info line后面可以跟“行号”,“函数名”,“文件名:行号”,“文件名:函数名”,这个命令会打印出所指定的源码在运行时的内存地址,如:
(gdb) info line tst.c:funcLine 5 of "tst.c" starts at address 0x8048456
还有一个命令(disassemble)你可以查看源程序的当前执行时的机器码,这个命令会把目前内存中的指令dump出来。如下面的示例表示查看函数func的汇编代码。
(gdb) disassemble funcDump of assembler code for function func:0x8048450
【编辑推荐】