我在我的系统上安装了一个二进制文件,并想查看给定函数的反汇编代码。最好使用objdump
,但其他解决方案也可以接受。
从这个问题中,我了解到如果我只知道边界地址,就可以对代码的一部分进行反汇编。从这个答案中,我了解到如何将我的拆分调试符号转换回单个文件。
但是,即使在单个文件上操作,即使反汇编所有代码(即不带任何起始或停止地址,而是使用纯-d
参数到objdump
),我仍然没有看到该符号出现在哪里。这是有道理的,因为涉及到的函数是静态的,所以它没有被导出。尽管如此,valgrind
将报告函数名称,因此它必须存储在某个地方。
查看调试部分的详细信息,我发现该名称在.debug_str
部分中提到,但我不知道可以将其转换为地址范围的工具。
addr2line
将从stdin
接受PCs/IPs并打印出它们对应的源代码行。同样,objdump -l
将混合objdump和源代码行;但是对于高度优化且具有大量内联的代码,任何一个程序的结果都不总是特别有用。 - davidg