当前位置:网站首页>WinDbg实践--入门篇
WinDbg实践--入门篇
2022-07-30 21:14:00 【阿升1990】
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/download/symbols,这个是调试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/download/symbols提示如下:
说明:总之没有能够从微软的符号服务器下载数据,并且网上没有找到有效的解决方案。由于暂时也用不到这个,就先这样告一段落,有知情的小伙伴可以分享下解决方案。
二.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-34379.htm
[2]Windbg新手入坑指南:https://www.52pojie.cn/thread-924116-1-1.html
[3]Windbg调试命令详解:http://yiiyee.cn/blog/2013/08/23/windbg/
[4]WinDbg用法详解:https://wenku.baidu.com/view/ca16ec6a306c1eb91a37f111f18583d049640fdc.html
[5]Good tutorial for WinDbg:https://stackoverflow.com/questions/4946685/good-tutorial-for-windbg
[6]WinDbg设置调试符号路径与调试符号下载:https://blog.csdn.net/qq_41252520/article/details/123095105
[7]dotnet/symreader-portable:https://github.com/dotnet/symreader-portable
[8]搭建自己的符号服务器:https://bbs.pediy.com/thread-262537.htm
[9]Windows调试工具:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/
[10]WinDbg Online Help:http://www.dbgtech.net/windbghelp/index.html
[11]WinDbg官方文档:http://www.windbg.org/
[12].NET探秘:MSIL权威指南:https://url39.ctfile.com/f/2501739-623685565-48209f?p=2096 (访问密码: 2096)
本文由mdnice多平台发布
边栏推荐
- go语言慢速入门——流程控制语句
- 【深度学习】目标检测|SSD原理与实现
- Automatically generate test modules using JUnit4 and JUnitGenerator V2.0 in IDEA
- [Deep Learning] Understanding of Domain Adaptation in Transfer Learning and Introduction of 3 Techniques
- Google Earth Engine ——ee.List.sequence函数的使用
- 弹性盒子模型
- Structured Streaming报错记录:Overloaded method foreachBatch with alternatives
- C language: detailed explanation of operators
- mysql deadlock
- MySQL 视图(详解)
猜你喜欢

Activiti 工作流引擎 详解

触摸屏状态机

使用map函数,对list中的每个元素进行操作 好像不用map

Markdown的使用

QUALITY-GATED CONVOLUTIONAL LSTM FOR ENHANCING COMPRESSED VIDEO

7、MySQL Workbench 导出导入数据库

KingbaseESV8R6 snapshot too old的配置和测试

【软件工程之美 - 专栏笔记】31 | 软件测试要为产品质量负责吗?

外包干了三年,废了...

Deep Non-Local Kalman Network for VideoCompression Artifact Reduction
随机推荐
MySQL BIGINT 数据类型
我是如何让公司后台管理系统焕然一新的(上) -性能优化
MySQL ODBC驱动简介
awk笔记
GPGGA NTRIP RTCM 笔记
js堆和栈
手把手教你搭建一台永久运行的个人服务器
tcp协议传输中的粘包问题
什么是公约数
[Typora] This beta version of Typora is expired, please download and install a newer version.
使用map函数,对list中的每个元素进行操作 好像不用map
8 ways to get element attributes in JS
KingbaseES TOAST存储方式
go慢速入门——函数
Use the map function to operate on each element in the list It seems that you don't need a map
WeChat reading, export notes
MySQL----多表查询
数据质量提升
QUALITY-GATED CONVOLUTIONAL LSTM FOR ENHANCING COMPRESSED VIDEO
2021年PHP-Laravel面试题问卷题 答案记录