如何在GDB中通过指令地址获取对应源代码行?
获取GDB指令地址对应的源代码行
既然你已经具备调试符号了,搞定这个问题其实很简单,直接用GDB的这两个命令就能快速定位:
查看地址对应的源代码位置:使用
info line命令,加上星号指定目标地址,输入:(gdb) info line *0x00007f8aba6ad96c这个命令会直接返回该指令地址对应的源代码文件名和具体行号,比如类似这样的输出:
Line 45 of "laprintf.c" starts at address 0x7f8aba6ad950 <laprintf+144> and ends at 0x7f8aba6ad970 <laprintf+176>.直接查看对应行的源代码上下文:如果想立刻看到那一行附近的代码,用
list命令同样指定地址:(gdb) list *0x00007f8aba6ad96c它会显示该地址所在位置前后的源代码行,帮你快速定位上下文。
需要注意的是,你看到的nop指令可能是编译器优化时插入的填充指令,它本身可能没有直接对应的源代码行,但调试符号依然会把它关联到所在函数的代码块中,info line返回的就是这个代码块对应的源代码行。
内容的提问来源于stack exchange,提问作者Zhani Baramidze
相关产品推荐
相关产品推荐

