【发布时间】:2014-06-03 15:55:55
【问题描述】:
我开发了一个程序,由一位正在体验某项操作的客户开发。这并不总是发生在同一个地方和相同的数据上,而且,它既没有发生在我的本地开发机器中,也没有发生在我的测试虚拟机(没有所有开发设备)中。
鉴于这些情况,我决定使用 MAP(在配置属性-> 链接器-> 带有选项 /MAP 的调试器中启用)进行编译,以查看导致崩溃的函数。
如果我理解正确,当程序崩溃时,我必须检查偏移错误,然后在我的 MAP 中的 RVA+BASE 列下搜索:
Address Publics by Value Rva+Base Lib:Object
0001:00037af0 ?PersonalizzaPlancia@CDlgGestioneDatiProgetto@MosaicoDialogs@@IAEXXZ 00438af0 f DlgGestioneDatiProgetto.obj
0001:00038000 ?SalvaTemporanei@CDlgGestioneDatiProgetto@MosaicoDialogs@@IAEXXZ 00439000 f DlgGestioneDatiProgetto.obj
实际上,我的崩溃发生在偏移量:
00038C90 所以我应该认为它在方法中的某个地方:
MosaicoDialogs::CDlgGestioneDatiProgetto::PersonalizzaPlancia
但这不是绝对可能的,所以假设电脑不会出错,我就是做错的人。
有人可以解释一下如何正确阅读 MAP 吗?
【问题讨论】:
-
您考虑过某种形式的日志记录吗?
-
是的,我已经排除了,因为这需要大量的工作和大量的日志。
-
“大量的工作和大量的日志。” - pffft!好的仪器就是好的仪器
标签: c++ visual-studio-2010 mfc map-files