42、驱动程序调试

简介: 1、通过打印,用KdPrint  2、存储dump信息。电脑属性,高级,设置,小内存存储。Dump信息用WinDbg查看。  3、使用WinDbg调试工具  1)设置符号表 在系统环境变量,用户变量中设置_NT_SYMBOL_PATH,值为 srv*c:\symbols*http://msdl.microsoft.com/download/symbols意为将http地址处下载的符号表存储于c:\symbols下。

1、通过打印,用KdPrint 

2、存储dump信息。电脑属性,高级,设置,小内存存储。Dump信息用WinDbg查看。 

3、使用WinDbg调试工具 

1)设置符号表

在系统环境变量,用户变量中设置_NT_SYMBOL_PATH,值为

srv*c:\symbols*http://msdl.microsoft.com/download/symbols
意为将http地址处下载的符号表存储于c:\symbols下。

http://www.cnblogs.com/mydomain/archive/2010/10/14/1851681.html

设置用户生成的驱动程序的符号表文件(pdb文件)

通过File->Image File Path sys文件的目录设置好,sys文件会记录pdb文件的位置。

windbg中,堆栈方向是向上的。

2)如何使用WinDbg调试程序

◇安装好WinDbg,安装好Windows符号文件,并将符号文件路径加入到WinDbg的符号文件路径中。

◇运行WinDbg

◇加载***.exe的符号文件:菜单“file\symbol file path”,在对话框中选择“browse”,找到编译生成的符号文件目录选中,单击“确定”按钮,加入符号文件。

◇将WinDbg设置为源代码模式:在菜单“Debg”中将“Source Mode”勾选上。

◇打开供调试的可执行文件***.exe:选择菜单“file>>executable file path”,在对话框中找到之前生成的***.exe,单击“打开”按钮。

WinDbg会在程序的某个位置自动中断。在“Command”窗口下面的命令输入栏中输入命令。

3)命令

F8单步

查看内存数据 

列出进程信息 

lm 查看已经加载的模块 

运行

单步运行

ld 加载符号文件

查看寄存器

bp,bu,bm:bp为执行断点,bu为未解析断点,bm为符号断点

bl 列出断点

bc 清除断点

4、通过WinDbgVMWare来实现联调。

http://www.cnblogs.com/mydomain/archive/2010/10/14/1851681.html

设置断点: bp 函数名/地址名

清除断点: bc [1|*] //1表示1号断点。对于没有加载符号表的驱动程序,可以使用延迟设置断点:bu.

符号表设置:重新加载(.reload,列出当前所有断点(.lm,手动加载符号表(.ld

5、其它调试软件

IRPTrace 专业调试IRP

BusHound 调试USB

Device Tree,DbgView

 

附:虚拟机与宿主机实现文件共享

Install VMWare Tools

工程中,属性,选项,ADD,网络共享。

\\.host\ 就可以访问。

 

 

目录
相关文章
|
NoSQL Linux 编译器
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
如何配置环境并使用QEMU虚拟机结合GDB进行Linux内核代码的断点调试,包括安装QEMU、交叉编译工具链,编译内核以及通过GDB远程连接进行调试的详细步骤。
1122 0
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
|
算法 程序员 C语言
【深度揭秘】汇编语言:现代编程中不可或缺的秘密武器!它如何在幕后操控一切?
【8月更文挑战第31天】随着计算机科学的进步,尽管高级编程语言因易读和可维护而流行,汇编语言在特定领域仍不可或缺。本文介绍汇编语言基础及其在现代编程中的应用。汇编语言通过助记符表示机器码,便于编写和理解。例如,在x86架构下,加法指令可表示为 `add eax, ebx`。尽管高级语言提供更高抽象,但在优化性能瓶颈(如矩阵乘法)和嵌入式系统中精确控制硬件方面,汇编语言依然发挥重要作用。例如,通过AVX-2指令集优化矩阵乘法,或在实时系统中实现精确时间延迟。这些示例展示了汇编语言在现代编程中的独特价值。
247 3
|
算法 应用服务中间件 Linux
【keepalived】高可用神器,实现应用的自动主备切换
【keepalived】高可用神器,实现应用的自动主备切换
1335 1
|
大数据 C#
C# 读取大文件 (可以读取3GB大小的txt文件)
原文:C# 读取大文件 (可以读取3GB大小的txt文件) 在处理大数据时,有可能 会碰到 超过3GB大小的文件,如果通过 记事本 或 NotePad++去打开它,会报错,读不到任何文件。
4495 1
|
异构计算
TCL管理Vivado工程
TCL管理Vivado工程
|
Web App开发 前端开发 安全
Chrome浏览器进程:了解多进程架构优劣的探索
Chrome浏览器进程:了解多进程架构优劣的探索
electron菜单或托盘点击如何打开新的窗口
electron菜单或托盘点击如何打开新的窗口
electron菜单或托盘点击如何打开新的窗口
|
安全 Java API
Android Strongbox( Android Ready SE)
Android Strongbox( Android Ready SE)
1298 0
|
数据采集 机器学习/深度学习 弹性计算
阿里云服务器主要用途是干嘛的?学生可以做什么?
阿里云服务器主要用途是干嘛的?学生可以做什么?使用阿里云服务器可以做什么?阿里云百科分享使用阿里云服务器常用的十大使用场景,说是十大场景实际上用途有很多,阿里云百科分享常见的云服务器使用场景,如本地搭建ChatGPT、个人网站或博客、运维测试、学习Linux、跑Python、小程序服务器等等,云服务器吧分享使用阿里云服务器可以做的几件小事
490 0
下一篇
开通oss服务