Windbg路径的配置问题

本文详细记录了在使用Windbg调试过程中遇到的符号文件配置问题及解决方法。通过正确设置symbolFilePath并添加环境变量_NT_SYMBOL_PATH,成功解决了无法读取调试数据列表及符号文件未找到等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windbg是调试驱动的工具,其实原来已经配置过他了,可以通过vm进行远程调试,但是那个过程忘记了,好像当初也是乱搞,然后突然发现好了,可是原来系统重装了,结果又要重新配置过了,结果现在,连symbol都出现问题,找了一些资料,终于搞定了。把这个过程写下来,以免忘记。
 
我在“symbol File Path”中设置“reload”,出现下面的问题:
 
 

lkd> .reload
Unable to read head of debugger data list
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrnlpa.exe - 
Loading Kernel Symbols
..................................................................................................................................................
Loading User Symbols
............................................................................................................
Loading unloaded module list
.........................

还以为真是的操作系统是AMD64位的,而虚拟机是单核CPU的,symbol文件是不一样的,但是我的虚拟机系统是windows xp+sp2 32bit的,而symbol文件也是对应版本,应该不会错的。

使用一些命令,比如:u KeAttachProcess,则没有问题,应为这些函数是导出的,但是我用:u PspTerminateProcess,则显示错误,unresovle,好像又是symbol的问题,后面就这样设置了“symbol file path”:

C:\WINDOWS\Symbols; SRV*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols

我的symbol文件放在C:\WINDOWS\Symbols目录下,然后添加了环境变量:
在我的电脑属性->高级->系统变量那里设置
变量名:_NT_SYMBOL_PATH
变量值:C:\WINDOWS\Symbols

然后reload,出现如下提示:

lkd> .reload
Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE
Loading Kernel Symbols
................................................................................................................
Loading User Symbols
...................................................................
Loading unloaded module list
..........

然后输入命令:u PspTerminateProcess,终于有结果了:

805c863e 8bff mov edi,edi
805c8640 55 push ebp
805c8641 8bec mov ebp,esp
805c8643 56 push esi
805c8644 64a124010000 mov eax,dword ptr fs:[00000124h]
805c864a 8b7508 mov esi,dword ptr [ebp+8]
805c864d 3b7044 cmp esi,dword ptr [eax+44h]
805c8650 7507 jne nt!PspTerminateProcess+0x1b (805c8659)

转载于:https://www.cnblogs.com/Bryantly2rase/p/4675138.html

### 配置 WinDbg 调试环境 WinDbg 是一个功能强大的调试工具,适用于内核调试、用户模式调试以及远程调试。以下是几种常见的 WinDbg 调试环境配置方法,涵盖本地调试、远程调试以及通过串口或 USB 的调试设置。 #### 1. 本地调试配置 如果只需要对本地程序进行调试,可以直接使用 WinDbg 启动目标程序,或者将 WinDbg 附加到已经运行的目标进程上。 - **启动目标程序**:在 WinDbg 中选择 `File > Open Executable`,然后选择要调试的可执行文件。 - **附加到进程**:在 WinDbg 中选择 `File > Attach to a Process`,然后从进程列表中选择要调试的进程 [^1]。 #### 2. 内核调试环境配置(VMware + WinDbg) 在 VMware 中配置 WinDbg 进行 Windows 内核调试时,需要在调试机上设置 WinDbg 的启动参数,并在虚拟机中启用调试支持。 - **调试机配置**:右键 WinDbg 快捷方式,选择“属性”,在“目标”字段中添加以下内容以配置符号路径和串口连接: ``` -y SRV*D:\symbols*http://msdl.microsoft.com/download/symbols -b -k com:port=//./pipe/com_1,baud=115200,pipe ``` 其中 `-y` 指定了符号文件的缓存路径和远程符号服务器地址,`-k` 指定了串口连接方式,使用命名管道 `com_1`,波特率为 115200 [^2]。 - **虚拟机配置**:在 VMware 的虚拟机设置中,添加一个串口设备,并将其连接到命名管道 `\\.\pipe\com_1`,确保调试机和虚拟机使用相同的管道名称。 - **靶机配置**:在靶机上启用调试功能,可以通过以下命令启用调试支持: ```cmd bcdedit /debug on ``` #### 3. 远程调试配置(TCP) WinDbg 支持通过 TCP 协议进行远程调试,适用于调试运行在远程主机上的应用程序。 - **启动调试服务器**:在调试服务器端运行以下命令启动调试服务器: ``` .server tcp:port=18888,password=abcc ``` 该命令会在端口 18888 上启动一个调试服务器,并设置连接密码为 `abcc` [^3]。 - **客户端连接**:在调试客户端使用以下命令连接到调试服务器: ``` windbg -remote tcp:Port=18888,Server=192.168.2.10 ``` #### 4. USB 调试配置WinDbg + USB 调试线) 如果使用 USB 调试线连接调试机和靶机,需要在靶机上进行一些额外的配置。 - **禁用 Secure Boot**:在靶机的 BIOS 设置中禁用 Secure Boot 功能。 - **连接 USB 调试线**:使用 USB 3.0 调试线连接调试机和靶机,并确保在靶机上识别到 USB 设备。 - **配置调试设置**:在靶机上运行以下命令以启用 USB 调试: ```cmd bcdedit /debug on bcdedit /dbgsettings usb targetname:test1 bcdedit /set "{dbgsettings}" busparams b.d.f ``` 其中 `b.d.f` 是通过 `usbview` 工具获取的总线、设备和功能号 [^4]。 #### 5. 符号文件配置 符号文件对于调试非常重要,可以帮助识别函数名、变量名等信息。可以通过以下命令配置符号路径: ```cmd .sympath SRV*D:\symbols*http://msdl.microsoft.com/download/symbols ``` 此命令将符号文件缓存到本地路径 `D:\symbols`,并从 Microsoft 的符号服务器下载所需的符号文件。 #### 6. 虚函数表调试技巧 在调试 C++ 程序时,可以使用 `x` 和 `dds` 命令来查看虚函数表中的函数地址。 - **查找虚函数表地址**: ```cmd x ole32!OpaqueDataInfo::vftable' ``` - **查看虚函数表内容**: ```cmd dds 7768265c ``` 其中 `7768265c` 是从上一步获取的虚函数表地址 [^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值