windbg

 windbg

1.基本概念:DUMP文件

.DUMP文件,也可以叫CORE文件,或者叫进程内存镜像,或者叫转存文件。
.进程的整个内存在某一时刻的镜像。
.通常是在程序异常终了时自动生成,或使用工具从运行中的进程中获取的,反映该进程的一个内存映象(同时加上调试信息),主要是用来调试的。

2 产生dump文件
 windows7之后可以通过注册表,来制定dump文件输出路径和dump文件类型


要开启这个功能需要进行如下配置
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"="c:\\dumpfile"
"DumpType"=dword:00000002


3 符号库的设置
SRV*E:\windbg\Symbol\SysSymbol*http://msdl.microsoft.com/download/symbols;srv*;E:\windbg\Symbol\UserSymbol

srv*表示是符号服务器,使用了一些复杂ID作为版本标识。对于microsoft的符号文件,使用srv*是没有问题的。对于应用程序符号文件夹,一般不要用srv*,否则导致找不到符号文件。除非使用symstore建立了应用符号服务器。关于symstore参考相关文档


4 WindDbg主要以命令方式工作,主要有三类命令:标准命令,元命令和扩展命令。

标准命令
    标准命令用来提供适用于所有调试目标的基本调试功能。
    所有基本命令都是实现在WinDBG内部的, 执行这些命令时不需要加载任何扩展模块。大多数标准命令是一两个字符或者符号, 只有version等少数命令除。标准命令的第一个字符是不分大小写的, 第二个字符可能区分大小写。迄今为止, WinDBG调试器共实现了130多条标准命令, 分为60多个系列。为了便于记忆, 可以根据功能将标准命令归纳为如下18个子类。


5 用户态调试(命令详情)

!peb
查看进程环境信息,可查看进程所有模块的基地址。
ln
将地址转化成符号,如函数名。
uf
反汇编并显示汇编代码 。



例子:.结合SysLog 定位
System log中
障害が発生しているモジュール名: NvPROBaseAPIMgr.dll、
バージョン: 4.0.0.7、タイム スタンプ: 0x4d5332cb
例外コード: 0xc0000005
障害オフセット: 0x00042ec0


首先找到崩溃模块基地址
0:000> !peb

    1130000 4d5332cb Feb 10 08:35:23 2011 C:\Program Files\NEC\UMF\Operations\Manager\bin\NvPROBaseAPIMgr.dll

通过基地址加偏移地址找到在该模块的哪个位置
0:000> ln 1130000+00042ec0
e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c(78)
(01172eb0)   NvPROBaseAPIMgr!nvdFree+0x10   |  (01172f30) 
NvPROBaseAPIMgr!nvdAlloc

通过反汇编以及起始地址加偏移查看具体哪个语句出错
0:000> uf NvPROBaseAPIMgr!nvdFree
NvPROBaseAPIMgr!nvdFree [e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c @ 73]:
   73 01172eb0(***) 56              push    esi
   76 01172eb1 8b742408        mov     esi,dword ptr [esp+8]
   76 01172eb5 85f6            test    esi,esi
   76 01172eb7 7452            je      NvPROBaseAPIMgr!nvdFree+0x5b (01172f0b)


NvPROBaseAPIMgr!nvdFree+0x9 [e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c @ 76]:
   76 01172eb9 57              push    edi
   76 01172eba 8d9b00000000    lea     ebx,[ebx]


NvPROBaseAPIMgr!nvdFree+0x10(***) [e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c @ 78]:
   78 01172ec0(***) f6460801     test    byte ptr [esi+8],1 
   78 01172ec4 8b3e            mov     edi,dword ptr [esi]
   78 01172ec6 7409            je      NvPROBaseAPIMgr!nvdFree+0x21 (01172ed1)

NvPROBaseAPIMgr!nvdFree+0x18 [e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c @ 79]:
   79 01172ec8 8b4610          mov     eax,dword ptr [esi+10h]
   79 01172ecb 50              push    eax
   79 01172ecc e804e4fbff      call    NvPROBaseAPIMgr!ILT+720(_nvcMemFree (011312d5)



通过e:\nvp\si\build\si\src\lib\nvprobaseapi\dalloc.c(78)
70 //jc dnode のリストを開放する
71 DWORD WINAPI
72 nvdFree(LPNVDNODE dphead)
73 {
74    LPNVDNODE dp, nextdp;
75
76    for (dp = dphead; dp; dp = nextdp) {
77       nextdp = dp->dn_dnext;
78       if (dp->dn_option & DN_COMPNAME) { ★ここでコアダンプ★
79          (void) nvcMemFree(dp->dn_compname);
80       }
81    略

96 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值