使用Map文件查找崩溃的位置

时间:2011-08-10 08:28:40

标签: c++ debugging application-verifier map-files

我正在调查一个错误的代码。应用程序验证程序显示堆在以下调用后已损坏:

AA!Class::Function+dbaf

我有我的地图文件。请使用上述信息和地图文件中的信息帮助我如何到达行号。

首选加载地址为00400000

0002:00000dc4       __imp_?Class@Function@@QAEXV?$vector@Uty_point@@V?$allocator@Uty_point@@@std@@@std@@0PAV23@@Z 0049bdc4 

注意:我有匿名的类和函数名。

2 个答案:

答案 0 :(得分:1)

你只有一张地图文件吗?没有PDB?如果你有完整的符号然后使用地图和.pdbs(和.exe)与WinDBG(你在Windows上?)。 我想你会看到你如何获得该功能的名称。

如果不是...... dbaf就是你的答案。这相当于什么?偏移量应该是错误指令的位置。 当然,您需要弄清楚每个指令的数量(组装说明)。

答案 1 :(得分:0)

我记得只能通过只有地图文件和EIP的值(指令指针,代码崩溃的地址)跳转到错误代码,快速谷歌搜索指向我这个网页:{{3 }}。根据我在理想情况下的记忆,您可以直接在Visual C ++调试器中更改EIP的值,它将跳转到相应的代码行。

现在,这是很久以前在Visual C ++ 6时代,我甚至不知道它今天是否仍然适用。正如已经指出的那样,你应该真正研究Visual C ++中的符号和程序数据库选项,有大量关于如何设置和使用它们的信息。