WinDbg调试:配置和查看符号

设置符号路径

利用环境变量设置符号路径

在WinDbg启动时,会根据 _NT_ALT_SYMBOL_PATH_NT_SYMBOL_PATH 的值设置符号路径:

> set _NT_ALT_SYMBOL_PATH="D:\symbols"
> windbg notepad.exe

利用启动参数设置符号路径

可以使用选项 -y 来指定符号路径:

> windbg -y "E:\symbols" notepad.exe

在WinDbg命令行中设置和查看符号路径

查看符号路径:

0:000> .sympath

设置符号路径:

0:000> .sympath D:\symbols

追加符号路径:

0:000> .sympath+ G:\work\symbols

设置 Microsoft 公有符号存储库:

0:000> .symfix

追加 Microsoft 公有符号存储库:

0:000> .symfix+

通过 cache* 设置缓存:

0:000> .sympath cache*d:\symbols;G:\work\symbols

设置符号服务器,基本语法为:SRV*[cache*]toppath,其中 SRV 表示这是一个符号服务器路径,[cache*] 用来设置存储从服务器下载的符号文件的路径。下例设置 Microsoft 公有符号服务器路径,并将下载的符号文件存储在 D:\symbols 目录下。

0:000> .sympath SRV*D:\symbols*http://msdl.microsoft.com/download/symbols

查看已加载的模块和符号文件

通过 lm 查看已加载的模块和符号文件:

0:000> lm
start    end        module name
013a0000 013de000   notepad    (deferred)             
...            
77160000 772e3000   ntdll      (export symbols)       C:\WINDOWS\SYSTEM32\ntdll.dll

通过 lmi 查看模块头部信息:

0:000> !lmi ntdll.dll
Loaded Module Info: [ntdll.dll] 
         Module: ntdll
   Base Address: 77160000
     Image Name: ntdll.dll
   Machine Type: 332 (I386)
     Time Stamp: 58256ca0 Fri Nov 11 15:00:48 2016
           Size: 183000
       CheckSum: 1883ce
Characteristics: 2102  
Debug Data Dirs: Type  Size     VA  Pointer
             CODEVIEW    23, 1f9ec,   1edec RSDS - GUID: {9D5EBB42-7B34-49C0-BA16-0009A9070625}
               Age: 1, Pdb: wntdll.pdb
                   ??   554, 1fa10,   1ee10 [Data not mapped]
     Image Type: FILE     - Image read successfully from debugger.
                 C:\WINDOWS\SYSTEM32\ntdll.dll
    Symbol Type: EXPORT   - PDB not found
    Load Report: export symbols

重新加载符号

通过 .reload 重新加载符号。注意这条命令并不会真正的重新加载符号,而只是把已加载模块的符号信息清除,在具体执行需要解析符号的命令时,才真正加载符号。

0:000> .reload

重新加载某个模块:

0:000> .reload combase.dll

重新加载某个模块,并强制解析:

0:000> .reload /f combase.dll

通过 !sym noisy 打开执行 .reload 系列命令时的详细信息:

0:000> !sym noisy

通过 !sym quiet 关闭执行 .reload 系列命令时的详细信息:

0:000> !sym quiet

验证符号

通过 !chksym 来验证符号文件与映像文件是否匹配:

0:000> !chksym bcrypt

C:\WINDOWS\SysWOW64\bcrypt.dll
    Timestamp: 584A7C20
  SizeOfImage: 1B000
          pdb: bcrypt.pdb
      pdb sig: BEFD22F9-21C0-4067-B22B-B4CC1E8ED238
          age: 1

Loaded pdb is d:\symbols\bcrypt.pdb\BEFD22F921C04067B22BB4CC1E8ED2381\bcrypt.pdb

bcrypt.pdb
      pdb sig: BEFD22F9-21C0-4067-B22B-B4CC1E8ED238
          age: 1

MATCH: bcrypt.pdb and C:\WINDOWS\SysWOW64\bcrypt.dll

查看符号

通过 x 命令查看符号,语法为:x [options] module!symbols。其中 modulesymbols 中可以包含通配符。

notepad 模块中查找包含 Thread 的符号:

0:000> x notepad!*Thread*

通过 ln 列出与特定地址相关的符号:

0:000> ln 013bf344
(013bf344)   notepad!_imp__CoCreateFreeThreadedMarshaler   |  (013bf348)   notepad!_imp__CoWaitForMultipleHandles
Exact matches:
    notepad!_imp__CoCreateFreeThreadedMarshaler = <no type information>
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 使用Windbg调试dump文件的步骤如下: 1. 首先,确保你已经安装了WindbgWindbg通常在安装Visual Studio时一同安装,你可以在安装目录中搜索windbg.exe来确认是否已安装\[1\]。 2. 配置符号文件目录。符号文件是用于将内存地址转换为可读的函数名和行号的文件。你可以从微软的服务器上下载符号文件。在系统环境变量中设置_NT_SYMBOL_PATH变量,指定符号文件的目录\[2\]。 3. 打开Windbg,选择"File"菜单,然后选择"Open Crash Dump"。浏览并选择你要调试的dump文件。 4. 在Windbg的命令行中,输入"!analyze -v"命令,以获取有关dump文件的详细分析报告。这将帮助你了解导致崩溃的原因。 5. 根据分析报告中的信息,你可以使用Windbg的其他命令来进一步调试程序。例如,你可以使用"lm"命令查看加载的模块,使用"kb"命令查看调用堆栈等。 6. 如果你需要附加到正在运行的进程进行调试,可以使用Windbg的"Attach to Process"选项。这对于调试偶发性问题非常有用\[3\]。 希望这些步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [Windows下关于windbg 调试 dump文件过程的环境配置以及注意事项](https://blog.csdn.net/qq_37059136/article/details/129746624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windbg调试dump文件](https://blog.csdn.net/bigger_belief/article/details/124476879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值