WinDbg学习(一)入门

        本文主要介绍WinDbg的入门知识,包括:下载安装、启动、配置和简单的用户模式调试示例。在我学习WinDbg的过程,主要参考了“WinDbg软件自带的用户手册”和http://www.dbgtech.net/blog/。其中,dbgtech网站的作者还制作了“http://www.dbgtech.net/windbghelp/”,在线的中文windbg帮助文档。


一、下载安装

1,搜索网址

    通过Mircrosoft的bing搜索“windbg”即可获取windbg的下载地址:

    https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

2,安装“VS2015+WDK10”

    该网址提供了VS2015和WDK10的下载链接。在win10系统下,需要先安装VS2015,选择自定义安装,并主动选择安装C++相关组件,然后再安装WDK10。windbg已经集成到了windows kits中,通过这样的安装形式,即可在开始菜单的“Windows Kits”中找到windbg的启动项。

3,windows键启动

    此外,安装好“VS2015+WDK10”后,也可以通过“win+R”,直接输入“windbg”启动windbg.exe。在win10 64位系统下,默认启动的是64位的windbg.exe,而在开始菜单中,是可以选择启动32位的windbg.exe的。


二、配置

    WinDbg的环境配置包括:符号、源码和可执行映像的路径设置,如下图,点开WinDbg的File菜单,即可设置。在使用调试器之前,我们需要先配置好这些路径,以便调试器能够识别调试目标中的各种变量、函数等等,这样我们在调试器中看到的就不是一堆二进制和汇编代码,而是更易理解的函数和变量。



1,symbol file path

    我们知道,程序运行需要将相关二进制文件(包括.exe和.dll文件)加载到内存地址空间,即内存映射文件。内存映射文件包含的是二进制信息,我们在调试时看起来会比较困惑,所以,我们需要一批跟这些二进制文件配套的符号文件(后缀名为“*.pdb”供调试时使用,它包含函数名、变量名等各种符号和调试信息,实际程序运行并不需要它。

    百度百科:http://baike.baidu.com/view/3788304.htm

    symbol file一般包括两类,一类是我们自己的程序的.exe和.dll文件的对应.pdb文件,另一类是系统dll的符号文件,如kernel32.dll等。我们把系统dll的符号文件称为“Mircrosoft公共符号文件”。

1)Symbol Server

    对于Mircrosoft公共符号文件,我们一般使用“ cache* + srv* ”,即设置为在线服务器,并缓存部分文件到本地主机。这样就不用每次都从在线服务器去下载符号文件了,而只是更新部分符号文件。

    为此,我们需要先新建一个本地缓存文件夹,我的是:F:\SymbolCache

    然后,将该路径设置为系统环境变量,这样可以省去每次都重新设置的麻烦。

a. 将windbg的安装路径添加到系统path中

    该路径下需要包含“symsrv.dll”和“symstore.exe”两个文件,分别用于symbol server和cache。

b. 新增系统环境变量项:_NT_SYMBOL_PATH 值为: SRV*F:\SymbolCache*http://msdl.microsoft.com/download/symbols

    具体可以在help文档中搜“symbol”,查看“symbol file and symbol path”。


2)目标程序符号文件

    直接通过命令“.sympath+ ”设置目标程序符号文件路径即可。


2,源码路径<

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值