windows调试器设置

编程中,debug既是技术,又是技巧。熟练的掌握调试工具可以加速软件问题的解决,这对于底层开发和高级开发都是十分必要的。本文就windows调试器的设置问题,根据个人在windbg上的使用经验进行总结,既算是对自己的总结,也算是份大家一起分享自愿吧。本文的前提是windbg已经安装完毕,适合对windbg有一定了解的读者。

1.JIT设置。通过JIT设置,可以改变系统默认的调试器-drwtsn32。当程序抛出或发生异常时,如果没有程序自身进行异常处理,而且没有运到其他调试器的拦截,那么,系统会将此一场交给JIT的设置进行处理。这是 异常陷阱处理的一种情况,详细的原理可以参看"windows internal(4th edition)"。对windbg的设置比较简单,只要运行命令:windbg -I即可。实际上,修改了HKLM/Software/Microsoft/Windows NT/CurrentVersion/AeDebug的健值。如果要支持对托管程序的调试的话就要修改注册表:
HKLM/Software/Microsoft/.NETFramework/DbgJITDebugLaunchSetting 为2
HKLM/Software/Microsoft/.NETFramework/DbgManagedDebugger 为Windbg的路径
在windbg端进一步设置好symbol path和source path就可以在异常发生时进行step by step的调试了。

2.镜像文件运行设置。通过该设置,可以在制订程序运行时自动附加到windbg上去,太方便了:)。注册表项HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options的最后一个子项"Your Image File Name Here without a path",修改为镜像名称,如iexplore.exe。健值Debugger默认值ntsd -d,用来调试内核镜像的,可去掉-d,使用ntsd调试,也可以修改为windbg的路径。GlobalFlag健值是通过工具gflags.exe来修改的,具体到应用中再说了。

本文仅是对设置方法进行了梳理,在具体应用中就灵活一些了。比如关于如何调试 Windows 服务,可以参考http://support.microsoft.com/kb/824344。

你可能感兴趣的:(调试技术)