文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>《Advanced .NET Debugging》 读书笔记 Listing 3-10到3-14: 得到程序中各对象的内容

《Advanced .NET Debugging》 读书笔记 Listing 3-10到3-14: 得到程序中各对象的内容

时间:2010-12-26  来源:李志鹏

1. 在WinDbg下载入03ObjTypes.exe。

2. 连续执行两次 g, 到程序要求按任意键继续处。

3. 执行 Ctrl + C。

4. 执行 .loadby sos.dll mscorwks

5. 执行  !name2ee 03ObjTypes.exe Advanced.NET.Debugging.Chapter3.ObjTypes.AddCoordinate

6.  按要求执行 !bpmd 命令添加断点

7. 执行 g, 此时程序将在上图的断点处停下。

8. 执行 !clrstach –a :

此时可以发现Main()方法内存在两个local的指针,其中第一个使用!dumpobj 命令可以判定是一个ValueType,因此它是Main()方法内声明的Coordinate类型的object对象。

而第二个指针则应该指向了在Main()方法内声明的ObjTypes类型的ob对象,该obj对象内包括三个对象: coordinate, intArray和strArray。

9. 对于Main方法声明的本地的对象,可以直接使用dd命令得到point对象内的值(0x64 = 100):

10. 对于ReferenceType类型的对象,执行 !DumpObj

可见heap上的该reference type类型的对象包含三个对象, coordinate, intArragy和strArray,其中coordinate为Value Type, 而intArray和strArray为reference type

11. 对于值类型 coordinate,执行 !dumpvc  000007ff000434e0 00000000023d5f58可以得到coordinate的具体的值:

12. 对于reference type的intArray和strArray,由于他们是数组,可以直接执行!dumpArray命令来获得他们值。

      执行 !DumpArray –details 0x23d6040 ,可以看到数组内的各元素的值:

13. 对于strArray,执行 !DumpArray –details 0x23d6070  ,可以得到string内各个元素的值:

相关阅读 更多 +
排行榜 更多 +
孤岛末世求生

孤岛末世求生

飞行射击 下载
瓶子射击挑战

瓶子射击挑战

飞行射击 下载
专业枪手

专业枪手

飞行射击 下载