1

调试器获取表达式的行号并将其转换为程序地址,实现是什么样的?我想在我正在编写的程序中实现这一点,我发现实现这一点的最有希望的库是libbfd。我需要的只是表达式的地址,我可以用ptrace(2). 我可以想象调试器从C可执行文件中的文件中查找函数名,但在那之后我迷路了。

有人知道吗?我不需要代码示例,只需要足够的信息就可以得到一个想法。而且我不介意特定于架构的答案,我真正关心的只有 Arm 和 x86-64。

4

1 回答 1

2

您应该查看 DWARF2 格式以尝试了解映射是如何完成的。请考虑 DWARF2 的庞大和复杂性。它并不适合所有人,但阅读它可能会比阅读 GCC/GDB 的源代码更快、更容易地满足你的好奇心。

于 2013-06-12T18:36:46.700 回答