调试器获取表达式的行号,将其转换为程序地址,实现是什么样的?我想在我正在编写的程序中实现这一点,而我发现实现这一目标的最有前途的库是libbfd。我只需要表达式的地址,我可以用ptrace(2)
等待它。我可以想象调试器从可执行文件中的C
文件中查找函数名称,但之后我就丢失了。
有谁知道吗?我不需要代码示例,只需要足够的信息以便我可以获得一个想法。 而且我不介意特定于架构的答案,我唯一关心的是Arm和x86-64。
答案 0 :(得分:2)
您应该查看DWARF2格式以尝试了解映射的完成方式。请考虑DWARF2如何庞大而复杂。它并不适合所有人,但阅读它可能比阅读GCC / GDB的源代码更快,更容易满足您的好奇心。