而DebugView是同类工具中最为优秀的一个,适用范围广,能够定制各种过滤条件,让你只看到关心的TRACE输出信息,而且可以定制高亮显示的内容等等,非常方便。 DebugView是完全免费的!
目前DebugView的最新版本是v4.76,下载地址是http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx,使用说明http://read.newbooks.com.cn/info/196819.html
另外在网上还找到一个汉化的版本http://www.pudn.com/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;
}
注:本文参考了文章 http://feisky.wordpress.com/2009/03/08/visual-c-%e5%bc%80%e5%8f%91%e8%be%85%e5%8a%a9%e5%b7%a5%e5%85%b7%e5%a4%a7%e6%94%b6%e9%9b%86/