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 是 Windows 调试工具中包含内核模式和用户模式的调试器内核模式通常为操作系统层面的应用程序,比如设备驱动、访问硬件相关(读写文件、网络访问等)的核心操作系统功能等用户模式简单来讲,就是我们自己开发的应用程序通常它运行在自己的虚拟空间中,无法直接访问操作系统的许多部分,包括系统硬件、未分配供其使用的内存等今天我们以用户模式来进行WinDbg调试的入门首先我们使用C#创建一个控制台程序,项目命名为TestDivideZero,代码如下: 命令说明.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分析好了,今天先到这里,该洗洗睡了[大笑]
0 评论