WinDbg常用命令系列---单步执行p*
p (Step)
p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值。当子例程调用或中断发生时,它们被视为单个步骤。
用户模式:
[~Thread] p[r] [= StartAddress] [Count] ["Command"]
Visual Stdion在混合模式下调试(C#/C++)
本文描述如何调试托管代码和本机代码,这一过程也称作混合模式调试。 根据 DLL 或应用程序是否用本机代码编写,有两种方案可以用来进行调试:
调用 DLL 的调用应用程序是用本机代码编写的。 在这种情况下 DLL 是托管的,托管调试器和本机调试器都必须启用,以调试托管代码和本机代码。 可以在**“<Project> 属性页”**对话框中选中此选项。 具体如何检查取决于是从 DLL 项目中启动调试,还是从调用应用程序项目中启动调试。
调用 DLL 的调用应用程序是用托管代码编写的,而 DLL 是用本机代码编写的。
启用混合模式调试调用的本机应用
在“解决方案资源管理器”中选择项目。
在“视图”菜单上,单击“属性页”。
在“<Project> 属性页”对话框中,展开“配置属性”节点,然后选择“调试”。
将“调试器类型”设置为“混合”或“自动”。
启用混合模式调试托管的调用应用程序
选择中的 C# 项目解决方案资源管理器,然后选择属性图标中,按Alt+Enter,或右键单击,然后选择属性。
选择调试选项卡,然后选择启用本机代码调试。
关闭属性页以保存所做的更改。
WinDbg常用命令系列---显示局部变量dv
dv (Display Local Variables)
dv命令显示当前作用域中所有局部变量的名称和值。
dv [Flags] [Pattern]
Visual Studio调试DLL项目
若要从 DLL 项目而不是从调用应用程序启动调试,必须在“<项目> 属性页”对话框或窗口中输入信息以指示 DLL 项目在何处才能找到调用应用程序。 C++“属性页”在布局和内容方面与 C# 和 Visual Basic“属性页”不同。请参考与项目语言相对应的过程。如果托管 DLL 由本机代码调用,并且您希望调试两者,则必须同时启用托管调试器和本机调试器。 可以在“<Project> 属性页”对话框或窗口中设置此项。
在 C++ 项目中指定调用应用程序
在“解决方案资源管理器”中选择 DLL 项目。
在“视图”菜单上选择“属性页”。
在“项目 属性页”窗口中的“配置”下拉列表中,选择“调试”。
打开“配置属性”文件夹并选择“调试”类别。
在“要启动的调试器”列表中,选择“本地 Windows 调试器”或“远程 Windows 调试器”。
在“命令”或“远程命令”框中单击下拉箭头,并从列表中选择“浏览”来找到应用程序。 或者,键入应用程序的路径和名称。
在“命令参数”框中键入所有需要的程序参数。
在 C# 项目中指定调用应用程序
在“解决方案资源管理器”中选择 DLL 项目。
在“视图”菜单上选择“属性页”。
在“项目 属性页”窗口中的“配置”下拉列表中,选择“调试”。
单击“调试”选项卡。
可通过执行以下任一操作来启动应用程序:
将“启动操作”设置为“启动外部程序”。
在“启动外部程序”框中,单击省略号按钮以通过浏览找到应用程序。
在“命令行参数”框中输入所有需要的程序参数。
或者,可以在 URL 处调用应用程序。 (如果要调试本地 ASP.NET 应用程序所使用的托管 DLL,可能会需要使用此方法。)
在“启动操作”下,选择“启动浏览器显示 URL:”单选按钮。
在紧邻的文本框中,键入 URL。
WinDbg常用命令系列---显示数据类型dt/dtx
dt (Display Type)
dt命令显示有关局部变量、全局变量或数据类型的信息。这可以显示有关简单数据类型以及结构和联合的信息。
用户模式下:
dt [-DisplayOpts] [-SearchOpts] [module!]Name [[-SearchOpts] Field] [Address] [-l List] dt [-DisplayOpts] Address [-l List] dt -h