我已经开发了一个客户,他在做某项操作时正在体验。这并不总是发生在同一个地方和相同的数据上,而且,它既没有发生在我的本地开发机器中,也没有发生在我的测试虚拟机(没有所有开发设备)中。
鉴于这些情况,我决定使用 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 吗?