5

我有一个通过内存跟踪程序执行的应用程序。我试图用来readelf --debug-dump=decodedline获取内存地址/行号信息,但我看到的内存地址与该转储给出的内存地址不匹配。我写了一些东西来将每个地址与 DWARF 数据中出现的“最新”地址相匹配——这似乎清理了一些东西,但我不确定这是否是解释这些数据的“官方”方式。

有人可以解释使用 DWARF 将程序地址映射到行号的确切过程吗?

4

2 回答 2

4

看看程序addr2line。如果不能完全解决您的问题(例如,通过解决问题或将其功能链接到其中),它可能会为您提供一些有关如何执行此操作的指导。

于 2011-07-21T17:49:56.933 回答
0

事实上,正如菲尔米勒的回答所提到的,addr2line是你的朋友。我有一个要点,我展示了如何从从回溯中获得的地址获取(C++)应用程序源代码中的行号。

遵循此过程不会向您显示您提到的过程,但可以让您了解代码如何映射到目标代码(在可执行文件或库/存档中)。希望能帮助到你。

于 2019-07-09T20:04:49.753 回答