【问题标题】:Can I translate ADDRESS in a code line?我可以在代码行中翻译 ADDRESS 吗?
【发布时间】:2011-03-31 08:51:20
【问题描述】:

我从应用程序收到如下消息: “0xA 处的指令......引用了 0xB 处的内存......内存无法被“写入”。单击“确定”终止程序”

地址 0xA 看起来有效:0x10001053。默认情况下,Exe 在内存中映射为 0x40000000,dll 在 0x10000000 处映射,因此它位于偏移量 1053h 处的第一个加载的 dll 中。

有人知道将这个地址转换为源代码行的方法吗?

【问题讨论】:

  • .text部分的地址0x10001053

标签: c++ windows debugging windbg


【解决方案1】:

您应该能够在地图文件的帮助下找到它。您可能需要调整一些编译器/链接器选项以生成具有足够详细信息的映射文件。

如果您使用的是 MS 编译器,则需要 /MAP 链接器选项。

【讨论】:

  • 您也可以在现有的 .exe 上使用 dumpbin,即使它没有与 /map 链接。信息可能不太完整,尤其是在没有调试信息的情况下链接,但如果与调试信息链接,通常就足够了。
【解决方案2】:

如果您有交互式调试器,请打开反汇编程序窗口并查找汇编程序行前面的代码标签。这应该对应于源代码中的函数(或内联导致问题的代码的函数)。

另一个技巧是使用调用堆栈窗口,这样您就可以看到从main 函数到导致崩溃的函数的所有调用。

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2011-06-21
    • 2014-07-24
    相关资源
    最近更新 更多