学习笔记入门模式用户WinDbg(模式用户路径入门学习笔记)「windows用户模式」

WinDbg 是 Windows 调试工具中包含内核模式和用户模式的调试器
内核模式通常为操作系统层面的应用程序,比如设备驱动、访问硬件相关(读写文件、网络访问等)的核心操作系统功能等
用户模式简单来讲,就是我们自己开发的应用程序
通常它运行在自己的虚拟空间中,无法直接访问操作系统的许多部分,包括系统硬件、未分配供其使用的内存等
今天我们以用户模式来进行WinDbg调试的入门
首先我们使用C#创建一个控制台程序,项目命名为TestDivideZero,代码如下:class Program{ static void Main(string[] args) { Console.WriteLine($"0/0.0d = {0 / 0.0d}"); // 输出:0/0.0d = NaN Console.WriteLine($"0/0.0f = {0 / 0.0f}"); // 输出:0/0.0f = NaN int nZero = 0;//(各种整型,此处只举例int一种) //此处需要将除数0声明为变量nZero传入表达式,否则编译不通过 Console.WriteLine($"0/0 = {0 / nZero}"); //引发异常:System.DivideByZeroException:“尝试除以零
” decimal dZero = 0.0m; //此处需要将除数0.0m声明为变量dZero传入表达式,否则编译不通过 Console.WriteLine($"0/0.0m = {0 / dZero}"); //引发异常:System.DivideByZeroException:“尝试除以零
” }}
假设该程序代码存放路径为:E:\TestDivideZero\TestDivideZero那么编译输出后的可执行文件路径为:E:\TestDivideZero\TestDivideZero\bin\Debug\TestDivideZero.exeok,现在我们来运行WinDbg程序,依次点击菜单:文件 → Start debugging → Launch executable在弹出的文件选择对话框中,选择上面编译输出的可执行文件:TestDivideZero.exe选择可执行程序TestDivideZero.exe点击“打开”按钮后,WinDbg将启动调试WinDbg启动调试状态依次输入以下命令,告知WinDbg从哪里查找该控制台程序的符号文件(pdb)和源码

学习笔记入门模式用户WinDbg(模式用户路径入门学习笔记)

命令说明.symfix设置符号存储路径,未指定参数将使用默认路径.sympath+ E:\TestDivideZero\TestDivideZero设置符号路径,+和路径之间有个空格如下图红框部分显示,成功挂载了符号文件设置代码及符号文件路径依次输入以下命令:命令说明.reload重新加载bm TestDivideZero!Main设置断点:在TestDivideZero程序的Main函数中设置断点bm命令设置断点输入命令g,启动TestDivideZero应用程序,它将一直运行,直到中断在引发异常的代码行上,如下图左侧黄色高亮行
中断在引发异常的代码行上右侧的Command窗口中,可以查看到异常信息:Integer divide-by-zero异常信息:Integer divide-by-zero按F10执行完F10单步执行然后输入命令:!analyze -v 即可扩展显示有关当前异常或 bug 检查的详细信息
分析异常或bug检查信息所涉及命令整理如下命令说明.symfix设置符号存储路径,无参数将使用默认路径.sympath+ path设置符号路,+和path直接有个空格.reload重新加载bm设置断点g执行!analyze -v分析好了,今天先到这里,该洗洗睡了[大笑]

联系我们

在线咨询:点击这里给我发消息