gpt4 book ai didi

c++ - 如何从链接器映射中找出源代码行号

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:36 27 4
gpt4 key购买 nike

出于某种原因,我只有正在调试的应用程序的链接器映射。有一个崩溃日志说崩溃发生在偏移量“myApp.exe!+ 4CA24”。

我可以从链接器映射中找到该方法。假设这是偏移量“myApp.exe!+ 4BD7C”。

有没有办法仅使用上述信息找出源代码中的确切行?

我知道如果我们有一个 .cod 文件,它会变得非常简单,但我没有(也无法创建)。

最佳答案

如果您只有 MAP 文件,您可以做的最好的事情是在反汇编器中研究 EXE 文件,并将其与您从编译器生成代码的常见方式中识别出的结构进行比较。这些你要学会。这意味着至少需要学习一些汇编程序。这是对您将来有帮助的很好的知识,尤其是当您必须调试大量代码时。

一个稍微简单的方法是下载关于处理器指令的免费英特尔书籍,然后简单地检查它们的大小。这样你就可以计算出错误指令的路径。为获得最佳结果,应将这两种方法结合使用。

通常你要找的东西看起来有点像这样:

mov DWORD PTR [edi+40], eax

(指令、寄存器、偏移量、大小和顺序可以不同,但​​间接寻址通常是大多数代码崩溃的地方)

无论您做什么,您都应该认真考虑为将来启用 COD 文件生成功能,因为这样可以非常容易地找到故障线。

关于c++ - 如何从链接器映射中找出源代码行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com