我从应用程序收到这样的消息: “0xA处的指令....在0xB处引用内存.....内存无法”写入“。单击”确定“终止程序”
地址0xA看起来有效:0x10001053。默认情况下,Exe在内存中映射为0x40000000,dll在0x10000000处,因此它位于偏移量为1053h的第一个加载的dll中。
有人知道将此地址转换为源代码行的方法吗?
答案 0 :(得分:3)
您应该可以在地图文件的帮助下找到它。您可能需要调整一些编译器/链接器选项以获得足够详细的生成的映射文件。
如果您使用的是MS编译器,则需要/MAP链接器选项。
答案 1 :(得分:1)
如果您有交互式调试器,请打开反汇编程序窗口并查找汇编程序行之前的代码标签。这应该对应于源代码中的函数(或者内联导致问题的代码的函数)。
另一个技巧是使用调用堆栈窗口,这样您就可以看到从main
函数到导致崩溃的函数的所有调用。