DebugView简介

DebugView简介,第1张

DebugView是一个系统调试信息输出的捕获工具。

在程序中使用如下函数:

1>OutputDebugString  或者在MFC中使用TRACE

2>内核模式中使用Out_Debug_String,DbgPrint ,_Debug_Printf_Service

编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独运行, 如果是在vs中运行,会直接输出在vs中),打开debugview 就可以在其中看到输出的调试信息。  debugView 中Capture 下勾选 Capture Win32  ,勾选Capture Events 两项。

Debugview 也支持远程调试,在本机运行Dbgview.exe/c/s/t可以让DebugView以服务的形式运行。在远端打开Debugview,点击Computer/connect ,输入查看调试信息主机的IP ,点击确定即可。

使用DebugView时候可以选择捕获程序调试信息为用户程序或者内核程序。

注意Debugview的过滤功能,比较实用,include 表示调试信息包含的字符串,exclue 表示不包含的字符串,多个字符串使用“”号隔开。

#include "windows.h"

#ifdef   _DEBUG

#define  DPRINTF_BUF_SZ        1024

static   __inline void  DPRINTF(char * fmt, ...)

{

        va_list    args

       char  buf[DPRINTF_BUF_SZ]

        va_start(args, fmt)

        vsprintf(buf,fmt,args)

        OutputDebugString(buf)

}

#else

static __inline  void  DPRINTF(char * fmt, ...)

#endif

DebugView是sysinternals工具集中的一款用来查看调试信息的工具。不管你是内核开发人员还是应用程序开发人员,都会用到这款神器。先简单看看DebugView可以干什么吧。

可以查看应用程序输出的调试信息。

可以查看驱动程序输出的调试信息。

可以查看本地机器的调试信息。

可以查看远程机器的调试信息。

可以根据规则高亮显示。

可以根据关键字过滤。

可以根据关键字搜索。

可以自动显示最新一条记录。

……

功能太多太全了,有木有?心动了吗?快跟我一起来了解下这个神器吧。

如何输出调试信息

应用程序和驱动程序都可以通过对应的API生成调试信息。

非托管应用程序可以通过Win32 API OutputDebugString()输出调试信息。

托管应用程序可以通过System.Diagnostics.Debug.Print()输出调试信息,内部会调用OutputDebugString()。

驱动程序可以通过DbgPrint()或DbgPrintEx()(或者使用KdPrint或KdPrintEx宏)输出调试信息。这两个宏在Debug版里会分别映射到DbgPrint()或DbgPrintEx(),在Release版会映射为空。

下图是一个使用DebugView捕获C++程序和C#程序输出的调试信息的截屏。

示例

基本功能

DebugView有一些值得我们了解的功能,下面列举了一些我用到的功能。

Options ->Show milliseconds 可以精确到毫秒,默认精确到秒。

Options ->Clock time (快捷键 CTRL + T),可以切换时间显示方式。

有时候我们希望知道两条调试信息的时间差(估算某段代码的执行效率的时候),有时候我们希望知道某条调试信息具体的时间点,可以按CTRL + T快速切换。

switch clocktime

Edit ->Filter/Highlight...可以过滤/高亮符合条件的记录。

不相关的调试信息太多,看不过来怎么办?过滤功能可以帮助我们排除无用的调试信息。

所有记录都是黑白的,区分起来太费劲,关键调试信息不够醒目。怎么办?高亮功能可以高亮显示包含特定关键字的调试信息。

点开下面的视频感受下吧!

过滤/高亮功能

使用File ->New Window...可以快速启动DebugView的新实例。如果你需要监听多台机器的调试信息,此功能可能对你有用。

使用Computer ->Connect...可以监视远程计算机的调试信息。

监视远程机器的调试日志

使用此功能,需要注意以下事项:

远端机器上必须以代理模式运行DebugView。可以通过dbgview.exe /a启动代理模式。更多选项,请参考DebugView的帮助文档,或者运行dbgView.exe -h查看。

以代理模式运行的DebugView会监听TCP 2020端口,注意设置防火墙的例外规则。

DebugView可以同时连接并监视多台远程计算机。可以通过Computer->Disconnect来断开与某台计算机的连接。

当前连接的机器名会在标题栏显示,注意看标题栏。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11376041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存