看过《深入浅出MFC》吗,候捷先生在书的最后提到了一种追踪TRACE(实际上是Windows函数OutputDebugString)的工具.有了该工具,你就可以在应用程序运行时通过它观察追踪应用程序内部的运行情况,只要你在程序中加了足够多的TRACE宏,并且以Debug版本编译. 特别是对于程序逻辑复杂(Debug几次就晕了),或者涉及到图形界面刷新或显示的程序(如果用一台电脑调试,在Visual C++环境和被调试程序之间切换,你很难看到正确的结果),或者非常耗费系统资源的程序(在用Visual C++调试运行,就更费劲了),巧妙的使用这类工具可以高效的解决问题。 说实话,Paul DiLascia等大师固然提供了这些工具,但是这些大师只是为了展示某些技术,所以他们提供的工具都只有基本功能。 而DebugView是同类工具中最为优秀的一个,适用范围广,能够定制各种过滤条件,让你只看到关心的TRACE输出信息,而且可以定制高亮显示的内容等等,非常方便。 DebugView是完全免费的!
目前DebugView的最新版本是v4.76,下载地址是http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx,使用说明http://read./info/196819.html
另外在网上还找到一个汉化的版本http://www./downloads116/sourcecode/windows/detail493993.html
说明:
DbgView与DT的功能基本上相同,在DT的基础上增加了过滤消息的功能,这样就可以过滤掉一些对自己没有用的调试信息。
v1.3.0.52 1、增加调试信息保存到文件功能。
v1.2.1.1 1、增加过滤掉某些包含的字符串功能
v1.1.0.1 1、如何集成到程序中 只需将原来的函数替换即可。要替换成新的函数内容如附1。
2、如何过滤。 过滤分为显示包含某些字符串的消息、过滤掉某些包含字符串的消息。 目前只实现了显示包含某些字符串的调试消息。 使用如例:如显示所有包含Hello的调试消息,只需在过滤器的包含中设置字符串Helllo;即可。 如显示所有包含Hello或haha的调试消息,只需设置如下Hello;haha;即可
3、如果不能运行可以是没有装vc8.0的运行库建议安装这个运行库。放在同一个目录下文件名为vcredist_x86.exe的程序。
附1 BOOL DebugTrace(char * lpszFormat,...) { static HWND hwnd = ::FindWindowA(NULL, "DbgView"); if(!IsWindow(hwnd)) hwnd = ::FindWindowA(NULL, "DbgView"); if(hwnd) { static char szMsg[512]; va_list argList; va_start(argList, lpszFormat); try { vsprintf(szMsg,lpszFormat, argList); } catch(...) { strcpy(szMsg ,"DebugHelper:Invalid string format!"); } va_end(argList); DWORD dwId = GetCurrentProcessId(); ::SendMessage(hwnd,WM_SETTEXT,dwId,(LPARAM)(LPCTSTR)szMsg); } return TRUE; }
|