c - 仅从程序计数器获取代码行信息?

标签 c debugging cpu-registers postmortem-debugging

首先,我无法使用调试器[1]。但我可以访问程序的程序计数器,还可以使用我需要的所有标志编译二进制文件(用 C 编写)。我什至可以更改代码(尽管我不想这样做)。给定一台 PC,我希望能够知道它对应的是哪一行。

我确信必须有一种自动化、实用、快速的方法来做到这一点。但我没有成功。

编辑:忘记提及:Linux系统,二进制文件是PPC,主机是i386。我确实可以访问 PPC 硬件。

[1] 应用程序正在被模拟,并且它是交叉编译的,我在主机模拟器中有一个 gdb。但我无法在模拟 guest 应用程序上连接 gdbserver。真实的硬件不是一个选择,我正在尝试构建一个基于模拟器的模拟器。

最佳答案

如果二进制文件是用调试信息编译的,那么您可以使用 PC 通过摸索包含调试信息的 ELF 部分来找到源代码中的正确位置。然而,自动化、快速和实用并不是这个过程中浮现在脑海中的术语!

关于c - 仅从程序计数器获取代码行信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873147/

相关文章:

c - 使用 strcat 超过 1 次 - link2019

c - 检查文件是否存在于 C 中的最佳方法是什么?

c++ - 为什么迭代器在 VS2010 中导致调试非常缓慢,即使 _HAS_ITERATOR_DEBUGGING、_SECURE_SCL、_SECURE_SCL_THROWS 设置为 0

java - 调试时如何处理 ClassNotLoadedException?

C - 调用函数时参数错误

javascript - Visual Studio Code 调试器看不到数组数据

c++ - 如何强制 C++ 编译器使用寄存器?

assembly - 在ARM64汇编代码中,何时将31 XZR与SP相对?

c - 了解开关条件下的寄存器用法

c - 结构中的函数指针,但在 C 中具有不同原型(prototype)的函数