DebugView 调试入门

简介: 软件下载地址:点击打开链接debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序(即该软件捕获的是exe直接运行时,抛出的信息,而不是Visual Studio调试时的),甚至支持内核程序,而且能够定制各种过滤条件,让你只看到关心的输出信息,而且可以定制高亮显示的内容等等,非常方便。程序非

软件下载地址:点击打开链接

debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序(即该软件捕获的是exe直接运行时,抛出的信息,而不是Visual Studio调试时的),甚至支持内核程序,而且能够定制各种过滤条件,让你只看到关心的输出信息,而且可以定制高亮显示的内容等等,非常方便。

程序非常轻量:目前最新的4.81,才4百多k。

软件运行界面如下:


捕捉Release模式的Win32程序输出的调试信息,需要选中Capture Global Win32选项:


通过编程输出一些调试信息到DebugView中,一共有三种方式:

System.Diagnostics.Debug.Write
System.Diagnostics.Debugger.Log
Kernal32.dll中的OutputDebugString方法
其中:System.Diagnostics.Debug.Write方法仅仅适用于debug模式下编译出来的exe,其余两中方法与debug与release模式下编译出的exe通用。

一、System.Diagnostics.Debug.Write方法(Debug模式生成的exe)

  for (int i = 0; i < 50; i++)
            {
                System.Diagnostics.Debug.WriteLine("测试DebugView!!deg");
            }
监听效果如下:


从上图可以看到DebugView不仅仅捕获了一些咱们直接需要输出的信息,还有一些别的程序的无用信息,那么怎么进行过滤呢?

“Include”表示内容中包含的字符串,“Exclude”则是设置Debug Print内容中不包含的字符串。如在include:“deg”数据。单击“OK”之后,就会筛选出全部包含“GTA”的内容。如下图。在分类输出结果之后,就能较方便地排除和捕获系统异常情况。Exclude方法也与之相似。具体如下图:


此时就过滤掉了之前的那些无用信息了。

二、System.Diagnostics.Debugger.Log方法(Debug与Release通用)

  for (int i = 0; i < 50; i++)
            {
                System.Diagnostics.Debugger.Log(0, null, "测试DebugView!!release");
            }

三、Kernal32.dll中的OutputDebugString方法(Debug与Release通用)

1、引入Kernal32.dll中的OutputDebugString方法

   [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        public static extern void OutputDebugString(string message);
2、使用:

<pre name="code" class="csharp"> for (int i = 0; i < 50; i++)
            {
                OutputDebugString("测试DebugView!JianKunKing");
            }

 
上面说的都是使用DebugView捕获本地exe程序的信息,那么可不可以用来捕获服务器上的信息呢? 

四、使用DebugView捕获服务器信息

1、将DebugView软件放置到服务器上,在与程序同级目录:

的地方执行如下的bat命令:

Dbgview.exe /a /t /g /s
双击bat命令后,效果如下:




点击同意后,效果如下:


双击右下角的图标,可以看到:


然后在本地机器上启动DebugView,并通过Connect连接到远程机器的DebugView,当远程机器中有调试信息输出时,本地就会捕获到,并展示出来:

设置连接ip:


输入ip:



此时,连接已经建立好了

此处依然以刚才测试【Kernal32.dll中的OutputDebugString方法】中的exe为测试源(即将该exe放置到服务器上,启动),启动该exe后,即可检测到信息如下:


小注:

1、DebugView与log4Net都可用于记录日志,那两者有什么区别吗?

个人感觉log4Net是做日志系统不可缺少的一部分,而DebugView比较适合及时调试,具体的选择就要看个人了。本文仅仅对于DebugView软件的基础使用加以阐述,更多的信息可以参见:DebugView官网

2、远程服务器启动命令DebugView软件的bat命令:点击打开链接



相关文章
|
6月前
|
Shell 数据安全/隐私保护 开发者
详细解读ApolloGPS调试笔记
详细解读ApolloGPS调试笔记
28 0
|
7月前
|
存储 编译器 程序员
【调试方法】基于vs环境下的实用调试技巧
【调试方法】基于vs环境下的实用调试技巧
|
7月前
|
Web App开发 移动开发 前端开发
2023前端调试技巧
2023前端调试技巧
|
7月前
|
NoSQL 编译器 开发工具
音视频源码调试前准备vs2019+qt5.15.2搭建可调试环境
音视频源码调试前准备vs2019+qt5.15.2搭建可调试环境
182 0
|
程序员 Windows
适合初学者的超详细实用调试技巧(上)二
适合初学者的超详细实用调试技巧
75 0
|
安全 程序员
适合初学者的超详细实用调试技巧(下)二
适合初学者的超详细实用调试技巧
49 0
|
编译器
适合初学者的超详细实用调试技巧(下)一
适合初学者的超详细实用调试技巧
76 0
|
程序员 编译器 C++
适合初学者的超详细实用调试技巧(上)一
适合初学者的超详细实用调试技巧
88 0
|
监控 程序员 编译器
代码的调试技巧
代码的调试技巧
|
程序员 C语言
实用调试技巧【下篇】
实用调试技巧【下篇】
88 0