windbg dump分析入门之符号相关

来源:互联网 发布:阿芙精油 知乎 编辑:程序博客网 时间:2024/05/01 00:14

1.符号路径基本语法:

SRV* 【cache】*toppath

例如:Microsoft公有符号存储地址:http://msdl.microsoft.com/download/symbols

设置符号路径就是:SRV*c:\mysymbols*http://msdl.microsoft.com/download/symbols

c:\mysymbols作为符号缓存以加快符号的访问速度


2.查看已加载的模块和符号文件基本语法:

lm [option] [-a Address] [-m Pattern] [-M Pattern]

eg.

0:000> lm
start    end        module name
00400000 007ca890   procexp    (deferred)             
71a10000 71a18000   WS2HELP    (deferred)             
71a20000 71a37000   WS2_32     (deferred)             
71a90000 71aa2000   MPR        (deferred)             
76320000 76367000   COMDLG32   (deferred)             
76990000 76ace000   ole32      (deferred)             
770f0000 7717b000   OLEAUT32   (deferred)             
77180000 77283000   COMCTL32   (deferred)             
77bd0000 77bd8000   VERSION    (deferred)             
77be0000 77c38000   msvcrt     (deferred)             
77d10000 77da0000   USER32     (deferred)             
77da0000 77e49000   ADVAPI32   (deferred)             
77e50000 77ee3000   RPCRT4     (deferred)             
77ef0000 77f39000   GDI32      (deferred)             
77f40000 77fb6000   SHLWAPI    (deferred)             
77fc0000 77fd1000   Secur32    (deferred)             
7c800000 7c91e000   kernel32   (deferred)             
7c920000 7c9b6000   ntdll      (pdb symbols)          d:\mylocalsymbols\ntdll.pdb\E62AEBA49D7048669405A13F1D46A57E2\ntdll.pdb
7d590000 7dd84000   SHELL32    (deferred)             


3.重新加载符号基本语法:

.reload 抛弃所有已加载的符号信息,任何解析符号的动作将从硬盘上重新加载符号文件

.reload <module>抛弃module的符号信息,任何解析符号的动作将从硬盘上重新加载符号文件

.reload /f <module> 强制调试器立刻加载并且解析与模块module相关的符号文件

.reload nt 加载与当前windows NT内核相对应的符号文件

.reload /user 当前活跃的进程加载所有的用户态符号

.reload <module>=start, size通过指定起始地址来强制加载符号

eg:

0:000> .reload /f WS2_32.dll
0:000> lm
start    end        module name
00400000 007ca890   procexp    (deferred)             
71a10000 71a18000   WS2HELP    (deferred)             
71a20000 71a37000   WS2_32     (pdb symbols)          d:\mylocalsymbols\ws2_32.pdb\A7605F8695A34329B38DDB8421A004CA2\ws2_32.pdb
71a90000 71aa2000   MPR        (deferred)             
76320000 76367000   COMDLG32   (deferred)             
76990000 76ace000   ole32      (deferred)             
770f0000 7717b000   OLEAUT32   (deferred)             
77180000 77283000   COMCTL32   (deferred)             
77bd0000 77bd8000   VERSION    (deferred)             
77be0000 77c38000   msvcrt     (deferred)             
77d10000 77da0000   USER32     (deferred)             
77da0000 77e49000   ADVAPI32   (deferred)             
77e50000 77ee3000   RPCRT4     (deferred)             
77ef0000 77f39000   GDI32      (deferred)             
77f40000 77fb6000   SHLWAPI    (deferred)             
77fc0000 77fd1000   Secur32    (deferred)             
7c800000 7c91e000   kernel32   (deferred)             
7c920000 7c9b6000   ntdll      (pdb symbols)          d:\mylocalsymbols\ntdll.pdb\E62AEBA49D7048669405A13F1D46A57E2\ntdll.pdb
7d590000 7dd84000   SHELL32    (deferred)     

4.验证符号基本语法:

!chksym Address

eg:(参考71a20000 71a37000   WS2_32 )

:000> !chksym 71a20011


C:\WINDOWS\system32\WS2_32.dll
    Timestamp: 4802BE08
  SizeOfImage: 17000
          pdb: ws2_32.pdb
      pdb sig: A7605F86-95A3-4329-B38D-DB8421A004CA
          age: 2


Loaded pdb is d:\mylocalsymbols\ws2_32.pdb\A7605F8695A34329B38DDB8421A004CA2\ws2_32.pdb


ws2_32.pdb
      pdb sig: A7605F86-95A3-4329-B38D-DB8421A004CA
          age: 2


MATCH: ws2_32.pdb and C:\WINDOWS\system32\WS2_32.dll


5.使用符号基本语法:

x [option] module!symbols

例如:

*为通配符,在调试陌生代码时很有用

x *!*some*

x module!*