|
|
|
|
|
|
|
C/C++本地代码调试
帖子发起人: qiliu3 发起时间: 2014-03-27 16:53 下午 回复: 3
|
帖子排序:
|
|
|
|
2014-03-27, 16:53 下午
|
qiliu3
注册: 2014-02-14
发 贴: 16
|
|
|
写了一个最简单的map代码:std::map<int, int> my; my.insert(std::map<int, int>::value_type(1, 1));
运行程序,然后windbg attach上去,查找map变量my的地址 0:000:x86> ? my Evaluate expression: 4386100 = 0042ed34
运行 0:000:x86> !std_map 0042ed34 MFCTest!std::map<int,int>
提示: ReadMemory error for address ffffffffccccccd0 std::map @ 000000000042ed34 - empty
怎么回事?!std_map应该怎么用? 谢谢!
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-03-30, 18:16 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
使用下面这段代码和WinDBG 6.3.9600.16384 X86,工作的很好
#include "stdafx.h" #include <iostream> #include <list> #include <map>
using namespace std;
int main(int argc, char* argv[]) { std::list<std::string> test; std::map<int, int> intmap;
intmap.insert(std::map<int, int>::value_type(1, 100)); intmap.insert(std::map<int, int>::value_type(2, 200)); intmap.insert(std::map<int, int>::value_type(3, 300));
test.back();
printf("Hello World!\n");
return 0; }
0:000> ? intmap Evaluate expression: 1638176 = 0018ff20
0:000> !std_map 0x0018ff20 int std::map @ 0018ff20 - size 00000003 using type "int" 00000000 - 00441480 (00441520,00441430,00441520) 0n1 00000001 - 00441430 (00441480,004414d0,004413e0) 0n2 00000002 - 004413e0 (00441520,00441430,00441520) 0n3
0:000> dt intmap -r Local var @ 0x18ff20 Type std::map<int,int,std::less<int>,std::allocator<int> > +0x000 _Tr : std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> > =00436e14 _Nil : 0x00441520 std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> >::_Node +0x000 _Left : (null) +0x004 _Parent : (null) +0x008 _Right : (null) +0x00c _Value : std::pair<int const ,int> +0x014 _Color : 1 ( _Black ) =00436e18 _Nilrefs : 1 +0x000 allocator : std::allocator<int> +0x001 key_compare : std::less<int> +0x004 _Head : 0x004414d0 std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> >::_Node +0x000 _Left : 0x00441480 std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> >::_Node +0x004 _Parent : 0x00441430 std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> >::_Node +0x008 _Right : 0x004413e0 std::_Tree<int,std::pair<int const ,int>,std::map<int,int,std::less<int>,std::allocator<int> >::_Kfn,std::less<int>,std::allocator<int> >::_Node +0x00c _Value : std::pair<int const ,int> +0x014 _Color : 0 ( _Red ) +0x008 _Multi : 0 '' +0x00c _Size : 3
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-03-31, 09:35 上午
|
qiliu3
注册: 2014-02-14
发 贴: 16
|
|
|
我从http://www.windbg.org/上面,x86的windbg只能下载到6.2.9200.16384版本啊
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2014-04-09, 17:13 下午
|
qiliu3
注册: 2014-02-14
发 贴: 16
|
|
|
修改了一下,把my.insert(std::map<int, int>::value_type(1, 1));改为my.insert(std::pair<int, int>(1, 1));
然后就可以用!std_map显示了,显示结果如下: my.insert(std::pair<int, int>(1, 1)); my.insert(std::pair<int, int>(2, 2)); my.insert(std::pair<int, int>(3, 3));
0:000> !std_map 003af678 "MFCTest!std::pair<int,int>" 8 std::map @ 003af678 - size 00000000 using type "MFCTest!std::pair<int,int>" of size 8 00000000 - 0029c6d8 (0029c6b8,0029c6f8,0029c6b8) +0x000 first : 0n1 +0x004 second : 0n1 00000001 - 0029c6f8 (0029c6d8,0029c6b8,0029c718) +0x000 first : 0n2 +0x004 second : 0n2 00000002 - 0029c718 (0029c6b8,0029c6f8,0029c6b8) +0x000 first : 0n3 +0x004 second : 0n3
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » C/C++本地代码调试 » Re: 请教一下,!std_map怎么用?
|
|
|
|
|
|