定制调试诊断工具和实用程序(7)
2006-07-20 11:42:21 来源:WEB开发网那些带黑色背景与其它动态 DLLs 之间的区别很微妙:带黑色图标的 DLL 已被加载,要么是用 LoadLibrary 显式加载,要么是用其它类似 CoCreateInstance 的 API 函数加载。没有黑色背景图标的 DLL 已被加载,因为另外一个 DLL需要它。例如,在 Figure 4 中,BROWSEUI.dll 有一个黑色图标,因为它已被动态加载。而 SHDOCVW.dll 图标没有黑色背景,因为它已被 Windows 自动加载。理由很简单:BROWSEUI.dll 是静态链接到 SHDOCVW.dll 的,所以为了加载 BROWSEUI,Windows 也得加载 SHDOCVW。
另一种“盗取”信息的途径
在结束 Win32 调试 API 的讨论之前,我想用一点点时间讨论异常处理机制。当被调试程序中有异常发生时,调试器通过 EXCEPTION_DEBUG_EVENT 收到通知,并且 u.Exception.ExceptionRecord.ExceptionCode 域中会包含此异常编码。异常编码都分布在 WINNT.H 和 WINBASE.H 文件中,因此要获得一个全面而且清晰易读的异常编码清单并不是件容易的事。CApplicationDebugger 的 GetExceptionDescription 方法将这些异常编码转换成可读性更强的字符串。
另一个异常编码清单信息源是 Visual C++ 本身。在调试应用程序时,“Debug”菜单中有一个“Exception”菜单项,它允许你选择调试器处理异常的方式,如 Figure 10 所示:
Figure 10 Exceptions Dialog
你可能会感到惊讶,在这里能发现没有定义过的异常编码。不用动手拷贝,从这个列表框“盗取”信息不是很好吗。这便是 WindowDump 的目的。它允许你用鼠标拾取某个窗口(通过其句柄值)并将信息 dump 到一个编辑框中。此外,它还能收集类信息和式样描述信息,如 Figure 11 所示。
- ››调试SQL server 2008功能设置
- ››调试JavaScript错误
- ››定制个性化的对话框窗口类
- ››定制 SWT/RCP 界面:如何编写一个漂亮的 SWT/RCP ...
- ››调试和测试 Swing 代码
- ››定制基于 Visual studio 2005 平台 Windows CE(AR...
- ››定制版黑雨 blackra1n 越狱3.1.2 全系 iPhone
- ››调试集成 Java 和 C/C++ 的代码
- ››定制 Eclipse RCP 应用程序,第 1 部分: 可与 SWT...
- ››调试JavaScript脚本程序(Firefox篇)
- ››调试JavaScript/VB Script脚本程序(ASP.NET篇)
- ››调试JavaScript/VB Script脚本程序(Wscript篇)
更多精彩
赞助商链接