当前位置:网站首页>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多平台发布
边栏推荐
- What is the common factor
- Deep Non-Local Kalman Network for VideoCompression Artifact Reduction
- c语言:操作符详解
- openim支持十万超级大群
- 7.联合索引(最左前缀原则)
- 我是如何让公司后台管理系统焕然一新的(上) -性能优化
- mpls简介
- Oblique document scanning and character recognition (opencv, coordinate transformation analysis)
- tcp协议传输中的粘包问题
- KingbaseESV8R6 snapshot too old的配置和测试
猜你喜欢
【深度学习】目标检测|SSD原理与实现
MySQL60题作业
MySQL 高级(进阶) SQL 语句 (一)
MySQL笔记1(数据库的好处,数据库的概念,数据库的特点,MySQL的启动,数据模型,SQL)
【Nacos】解决Nacos下载速度缓慢的问题
ENS emoji domain name is on fire!Hype or opportunity?
这本记述40年前历史的游戏书,预言的却是当下的事
MySQL 视图(详解)
LeetCode·每日一题·952.按公因数计算最大组件大小·并查集
QUALITY-GATED CONVOLUTIONAL LSTM FOR ENHANCING COMPRESSED VIDEO
随机推荐
MySQL 删除表数据,重置自增 id 为 0 的两个方式
Enhancing Quality for HEVC Compressed Videos
mysql 递归函数with recursive的用法
这本记述40年前历史的游戏书,预言的却是当下的事
为什么那么多自学软件测试的人,后来都放弃了...
Automatically generate test modules using JUnit4 and JUnitGenerator V2.0 in IDEA
【软件工程之美 - 专栏笔记】31 | 软件测试要为产品质量负责吗?
HJ85 longest palindrome substring
类似 MS Project 的项目管理工具有哪些
mpls简介
MySQL 视图(详解)
mysql8安装步骤教程
MYSQL 唯一约束
Outsourcing worked for three years, it was abolished...
MySQL ODBC驱动简介
bgp路由过滤
Google Earth Engine ——快速实现MODIS影像NDVI动画的在线加载并导出
KingbaseES V8R6备份恢复案例之---同一数据库创建不同stanza备份
socket: Kernel initialization and detailed process of creating streams (files)
MySQL60 homework