6

WinDbg Preview安装以及符号表配置 - zz89

 1 year ago
source link: https://www.cnblogs.com/zz89/p/16757640.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1、安装WinDbgPreview

在Microsoft Store直接搜索windbg就可以下载。

2、配置符号服务器

2.1 符号

符号是方便调试程序的文件,通常是pdb文件。一个模块(可执行程序,动态链接库)对应一个pdb文件。不同的windows版本中的文件不同(比如说kernel32),版本不同pdb符号文件也不同,因此要从微软提供的符号服务器获取本机对应的符号。

但是要在本地建立一个文件夹作为缓存来存放符号文件,以便下次使用时直接从本地获取。

2.2 配置

1、可以在环境变量设置_NT_SYSBOL_PATH为 srv*C:\Symbols*http://msdl.microsoft.com/download/symbols

其中c:\Symbols就是自己本机上符号的缓存目录,可以自己设置。后面网址就是微软符号服务器了

但是,我是用这种方法时,visual studio调试时会自动从这个网站加载符号,非常浪费时间,令人崩溃。而且好像强制没法关闭,所以根据自己情况自行选择。

2、不设置环境变量了,直接进入windbg,file->setting->debugging settings把symbol path填入也可以。

2757375-20221006141835183-1485721460.png

如图所示。

3、加载一个可执行文件在
在命令行输入.sympath命令也可以添加。这一个方法自行搜索。

3、基本使用

3.1 加载文件

直接把可执行文件拖进去就可以,或者file->lanch executable加载一个文件。会自动识别是32位程序还是64位程序。这里可以直接打开记事本文件notepad.exe做测试。

2757375-20221006142635780-2012199633.png

在命令窗口输入lm,显示notepad.exe用到的模块以及符号表对应情况。
如图,deferred对应的模块没有加载,pdb带路径的就是加载了符号表。kernel32符号表已经加载,但是user32符号表没有加载。可以用ld kernel32加载符号文件。

2757375-20221006144956475-2054705858.png

3.2 常用命令

r 查看寄存器
t 单步执行,遇到call跟进去
g 运行
bp (address | function),在地址下断点,比如,bp 0x401000,或者 bp kernel32!CreateFileW


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK