【发布时间】:2017-12-04 10:15:59
【问题描述】:
我仍在使用相同的脚本,我在 this other StackOverflow post 中提到过。
总体思路:
- 使用脚本打开转储文件
- 查看所有变量的内存地址
- 尝试获取一些信息
这次dt 函数似乎在CMap 对象上失败了:
dt <application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> m_nCount 000000eab8748430
Ambiguous matches found for <application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> (dumping largest sized):
<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>::~CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>
<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>::CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64> {0x02b bytes}
为了解决这个问题,我尝试在 Visual Studio 监视窗口中打开对象,但无论我尝试什么,这似乎都失败了:
(CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "sCMap..." is undefined
(CMap)0x000000eab8748430 => identifier "CMap" is undefined
(<application_name>!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "<application_name>" is undefined
(mfc110u!CMap<int,int,CUIntArray * __ptr64,CUIntArray * __ptr64>)0x000000eab8748430 => identifier "mfc110u" is undefined
...
但是这种工作方式似乎适用于其他 MFC 类,例如 CStringArray:
(CStringArray*)0x000000eab87c6d10 => this is giving good results
有人知道我如何根据内存地址在 Visual Studio 的监视窗口中显示 CMap(或 CArray)对象吗?
【问题讨论】:
-
这与STL无关...
-
@sergiol:所以?我刚刚在这个网页上搜索了 STL,第一个也是唯一一个条目是你的评论 :-)
-
我刚刚编辑了您的问题以删除所有 STL 引用。
标签: c++ visual-studio debugging visual-c++ mfc