首先,我无法使用调试器[1]。但我可以访问程序的程序计数器,还可以使用我需要的所有标志编译二进制文件(用 C 编写)。我什至可以更改代码(尽管我不想这样做)。给定一台 PC,我希望能够知道它对应的是哪一行。
我确信必须有一种自动化、实用、快速的方法来做到这一点。但我没有成功。
编辑:忘记提及:Linux系统,二进制文件是PPC,主机是i386。我确实可以访问 PPC 硬件。
[1] 应用程序正在被模拟,并且它是交叉编译的,我在主机模拟器中有一个 gdb。但我无法在模拟 guest 应用程序上连接 gdbserver。真实的硬件不是一个选择,我正在尝试构建一个基于模拟器的模拟器。
最佳答案
如果二进制文件是用调试信息编译的,那么您可以使用 PC 通过摸索包含调试信息的 ELF 部分来找到源代码中的正确位置。然而,自动化、快速和实用并不是这个过程中浮现在脑海中的术语!
关于c - 仅从程序计数器获取代码行信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873147/