windbg调试

file->symbol file path.. 打开pdb文件

file->attach to a process.. 附加到进程pid

x Wind.GFS.Client!*    // 打印Wind.GFS.Client.dll所有符号

x Wind.Expo4!*

 

分析dump

导入符号pdb文件及源码路径

打开dump文件:file->open crash dump..

!analyze -v    // 扩展分析工具

可以查看到程序崩溃点

u Wind_Expo4!MessageBus::ISimpleAppServer::getNextAsyncSerialNum      //反汇编(这个方法是最后的栈帧 !analyze -v得到)

windbg查看类结构命令dt

windbg查看地址的值命令db

如果通过db ecx的地址得到this的地址(一般ecx存this的地址,也有可能存到别的寄存器中可以通过反汇编命令u,如看到MOV EAX, dword ptr[ESI+0x48h],就可以判断ESI是this指针)

如果this指针在ESI,可以通过?? (MyClass*)@ESI打印。

参考:

WinDBG技巧:this指针的常见误区 (ECX寄存器存放this指针)

在WinDbg中调试时如何查看类/结构对象成员的值

WinDbg常用命令系列---内存查看d*

 
喜欢 0
分享