乐趣区

关于程序员:WinDbg实践入门篇

  WinDbg 从字面意思就是 Windows+Debug 的组合,即 Windows 平台上的调试工具,能够调试用户模式、内核模式、dump 文件等,总之晓得它的调试性能十分弱小就行了。WinDbg 调试命令分为 3 种,别离是根本命令、元命令和扩大命令。根本命令和元命令是调试器自带的,元命令总以 ”.” 结尾,而扩大命令总以 ”!” 结尾。前面的系列次要是通过例子 + 命令来实际 WinDbg。

一. 配置微软符号服务器[没能胜利]

  WinDbg 在 Windows 程序中,通常都有一个和 XXX.exe 雷同名字的 XXX.pdb,pdb 的全拼是 Program Debug Database。pdb 有本身的文件格式,它次要蕴含了调试信息,该文件是由链接器生成的符号文件。符号服务器 [Symbol Server] 实质上就是一个文件服务器,它把要调试的符号进行了集中存储,这样只有把 WinDbg 指向符号服务器就能够解析符号名称了。罕用的公共符号服务器就是微软的符号服务器了,即 http://msdl.microsoft.com/dow…,这个是调试 Windows 应用程序和 Windows 内核程序必不可少的。当然也能够搭建本人的符号服务器。

1.WinDbg 默认的设置门路

File -> Settings -> Debugging settings,默认的源码门路、符号门路和缓存门路如下:

2. 设置_NT_SYMBOL_PATH 环境变量

设置_NT_SYMBOL_PATH 环境变量的值为SRV*D:\mysymbol*https://msdl.microsoft.com/download/symbols

在 WinDbg 中执行命令!sym noisy[显示具体加载信息]和.reload /f[加载符号]如下:

通过上图一看就是网络连接的问题。文章 [6] 讲要设置下 proxy 才行,设置_NT_SYMBOL_PROXY 环境变量的值为 127.0.0.1:19180:

依照操作 proxy 也设置和关上了,执行.reload / f 命令仍然原样报错,并且网上没有找到解决方案。关上 https://msdl.microsoft.com/do… 提醒如下:

阐明:总之没有可能从微软的符号服务器下载数据,并且网上没有找到无效的解决方案。因为临时也用不到这个,就先这样告一段落,有知情的小伙伴能够分享下解决方案

二.WinDbg 罕用的命令

1. 命令.cls

输出.cls 清空 Command 窗口中的内容:

2. 命令 version

应用 version 命令查看版本信息:

3. 命令 vertarget

应用 vertarget 命令查看指标计算机版本信息:

4. 命令 lm

应用 lm 查看模块信息:

次要显示模块名称,模块开始地址,模块完结地址,模块门路等信息。

5. 命令!dlls

应用!dlls 命令查看模块信息:

6. 命令.process

应用.process 显示以后过程信息:

7. 命令.thread

应用.thread 显示以后线程信息:

8. 命令!peb

应用!peb 命令显示过程环境块信息:

9. 命令!teb

应用!teb 命令显示线程环境块信息:

10. 命令!address -summary

应用!address -summary 命令显示内容地址摘要信息:

11. 命令.sympath

应用.sympath 查看以后符号搜寻门路等信息:

三. 应用 WinDbg 关上 notepad.exe

WinDbg 开启调试的形式有很多种,这里应用关上可执行文件的形式:

应用 WinDbg 关上 notepad.exe 后,Command 窗口显示内容如下:

次要显示 Windows Debugger 版本,执行性文件门路,符号搜寻门路等信息。

四..NET 探秘:MSIL 权威指南

明天举荐的一本好书和老书是《.NET 探秘:MSIL 权威指南》,这本书以.NET2.0 为根底,是解说 MSIL 的权威著述,感兴趣的小伙伴能够下载[12]。前面要把 WinDbg 操作和 MSIL 实际融入到日常的.NET 软件开发中,以进步软件的安全性。

参考文献:
[1]WinDbg 用户态调试教程:https://bbs.pediy.com/thread-…
[2]Windbg 老手入坑指南:https://www.52pojie.cn/thread…
[3]Windbg 调试命令详解:http://yiiyee.cn/blog/2013/08…
[4]WinDbg 用法详解:https://wenku.baidu.com/view/…
[5]Good tutorial for WinDbg:https://stackoverflow.com/que…
[6]WinDbg 设置调试符号门路与调试符号下载:https://blog.csdn.net/qq_4125…
[7]dotnet/symreader-portable:https://github.com/dotnet/sym…
[8]搭建本人的符号服务器:https://bbs.pediy.com/thread-…
[9]Windows 调试工具:https://docs.microsoft.com/zh…
[10]WinDbg Online Help:http://www.dbgtech.net/windbg…
[11]WinDbg 官网文档:http://www.windbg.org/
[12].NET 探秘:MSIL 权威指南:https://url39.ctfile.com/f/25… (拜访明码: 2096)

本文由 mdnice 多平台公布

退出移动版