一、gdb 调试-源代码关联
在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性。gdb 当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和快捷。
gdb之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置;因为源代码的位置在编译之后可能会移动到其它地方,所以gdb还会在当前目录中查找源代码,另外gdb也允许明确指定源代码的搜索位置。
在一个调试会话中,gdb维护了一个源代码查找目录列表,默认值是编译目录和当前工作目录。当gdb需要一个源文件的时候,它依次在这些目录中查找,直到找到一个或者抛出错误。
gdb还维护了一个路径替换规则,将要搜索的原始路径按照找到的第一个规则做前缀替换,然后再在源码搜索目录中查找文件。
因此,源代码关联默认情况下搜索路径如下:
除了默认搜索路径,还可以通过如下方式来设置源代码搜索位置和替换规则
2. gdb允许设置路径替换规则,以应付源代码位置迁移的情况。
在一些必要的时候,我们需要查看汇编代码来诊断问题。gdb 提供了这种可能。
gdb提供了两种能力:
2. disassemble,disassemble /m [/m表示混合输出源代码和汇编代码],disassemble /r [/r表示混合输出二进制和汇编代码]
显示指定地址范围内的汇编代码,有4种使用形式: [参数可以是16进制的地址,也可以是函数名]
set disassembly-flavor instruction-set:设置显示汇编代码时使用的风格,目前只针对intel x86系列,可取的值为att和intel,默认是att。
show disassembly-flavor:显示disassembly-flavor设置
set disassemble-next-line on|off|auto:当程序停止下来的时候,是否显示下一行源代码的汇编代码,默认为off。
show disassemble-next-line:显示disassemble-next-line设置。
参考:
[1]. 使用GDB进行调试: http://www.cnblogs.com/frydsh/p/3367015.html
[2]. 使用GDB的源代码查看功能: http://www.cnblogs.com/frydsh/p/3388828.html
原文:http://www.cnblogs.com/yaozhongxiao/p/5242341.html