下面我们来做一个非常简单的例子,来感受一下WinDbg的使用,以及里面常用的窗口。
首先,在VS里创建一个C++的命令行程序DebugSample, 代码如下,
然后打开项目的属性窗口,选择Linker -> Debugging, 将Generate Map File改成Yes, 这样在Link的时候会生成map文件。
Build这个项目。
按笔记一设置好Symbol跟Source路径,点击File -> Open Executable, 找到DebugSample.exe,打开。如果source窗没有自动打开,则用File->Open Source File来手动打开。
测试断点功能。 在Command窗口输入bl, 这个时候应该没有任何断点显示。
输入bp main, 会看到有一个断点打在了main函数。再次bl, 会显示已经有一个断点了。
也可以用F9在代码窗口设置断点。
按F5继续运行直到断点的位置,F10单步到cout那行,鼠标可以放着变量上看变量的值。
也可以用Watch窗口来查看,View->Watch, 输入i, 可以观察i的值。
点击View -> Call Stack 可以查看callstack,
Command窗口:
点击View->Command打开命令窗口,默认情况下开始调试后,会自动打开。
命令窗口分为三部分,如上图:
1: 主要是用来显示输入跟输出
2: 提示符窗口,显示当前调试器的状态信息。如这里的0:000,第一个0表示当前进程号,后面的三个0表示当前线程号。有时候也会显示kd信息即内核调试信息,如
kd> 单处理器系统
0:kd> 多处理器系统,0表示当前处理器号
*BUSY* 表示调试器正忙。
3: 命令输入窗口