DebugView 调试入门

参考链接:http://blog.csdn.net/jiankunking/article/details/44984487

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

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

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

软件运行界面如下:


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


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

[csharp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. System.Diagnostics.Debug.Write  
  2. System.Diagnostics.Debugger.Log  
  3. Kernal32.dll中的OutputDebugString方法  
其中:System.Diagnostics.Debug.Write方法仅仅适用于debug模式下编译出来的exe,其余两中方法与debug与release模式下编译出的exe通用。

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

[csharp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. for (int i = 0; i < 50; i++)  
  2.           {  
  3.               System.Diagnostics.Debug.WriteLine("测试DebugView!!deg");  
  4.           }  
监听效果如下:


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

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


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

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

[csharp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. for (int i = 0; i < 50; i++)  
  2.           {  
  3.               System.Diagnostics.Debugger.Log(0, null"测试DebugView!!release");  
  4.           }  

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

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

[csharp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. [DllImport("kernel32.dll", CharSet = CharSet.Auto)]  
  2.      public static extern void OutputDebugString(string message);  
2、使用:

[csharp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. <pre name="code" class="csharp"for (int i = 0; i < 50; i++)  
  2.             {  
  3.                 OutputDebugString("测试DebugView!JianKunKing");  
  4.             }  

 

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

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

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

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

[plain] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. 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命令:点击打开链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AJAX只支持字符类数据返回,不支持文件下载

如题转载于:https://www.cnblogs.com/caicaizi/p/5000363.html

Xcode中指令集相关选项

Xcode中指令集相关选项&#xff08;Build Setting中&#xff09; &#xff08;1&#xff09;Architectures Space-separated list of identifiers. Specifies the architectures (ABIs, processor models) to which the binary is targeted. When this build setting specifies…

DebugView使用笔记

1. 什么是DebugView? 它是Sysinternals公司的系列调试工具。可以捕获程序中由TRACE()和OutputDebugString输出的信息。 2. C需要完成哪些工作呢&#xff1f; 将打印的信息用OutputDebugString输出&#xff0c;示例&#xff1a; [cpp] view plaincopy #include "stdio.h&q…

DebugView的使用[通用汇总]

DebugView是一款免费辅助工具&#xff0c;用来输出捕捉OutputDebugString()函数输出的信息等。 1 下载 http://technet.microsoft.com/en-us/sysinternals/bb896647 1.1 介绍DebugView http://www.vcfans.com/2008/11/trace-show-about-a-tool-debugview-sent-a-message-to-tra…

Android 通信 EventBus

参考&#xff1a; Android 框架炼成 教你如何写组件间通信框架EventBusAndroid EventBus源码解析 带你深入理解EventBusAndroid EventBus实战 没听过你就out了快速Android开发系列通信篇之EventBusEventBus是一个publish/subscribe (发布 / 订阅) 消息的总线&#xff0c;简化了…

WIFI无线路由器的五种工作模式

http://www.360doc.com/content/12/0814/08/10560798_230064460.shtml

iOS面试题1

而技术开发面试&#xff0c;问一些技术相关的问题是必须的&#xff0c;最新的技术可能人人都趋之若鹜&#xff0c;但有些原理和基础的也希望都有了解。 这里整理了一些iOS相关的面试题&#xff0c;&#xff08;可能都已经老掉牙&#xff09;但是也想跟大家分享下&#xff01; 如…

高质量JAVA代码编写规范

1. Java 命名约定   除了以下几个特例之外&#xff0c;命名时应始终采用完整的英文描述符。此外&#xff0c;一般应采用小写字母&#xff0c;但类名、接口名以及任何非初始单词的第一个字母要大写。 1.1 一般概念   * 尽量使用完整的英文描述符   * 采用适用于相关领域的…

MFC中绘制动态曲线

参考&#xff1a; http://blog.csdn.net/zang141588761/article/details/50536788 [转载]MFC中画直线和曲线 一、画直线要想在MFC中画出有颜色的线条&#xff0c;首先就要设置DC的画笔&#xff0c;我们可以按如下方法来设置画笔&#xff1a;第一步&#xff1a;在View类中添加…

博客地址 RSS地址

博客地址 RSS地址 OneVs Den http://onevcat.com/atom.xml 破船之家 http://beyondvincent.com/atom.xml NSHipster http://nshipster.cn/feed.xml Limboy 无网不剩 http://feeds.feedburner.com/lzyy 唐巧的技术博客 http://blog.devtang.com/atom.xml Lex iOS notes http://i…

2015.11.27---Java

public class star{public static void main(String[] args) {System.out.print("ha");}}转载于:https://www.cnblogs.com/supermeimei/p/5001922.html

QT之深入理解QThread

QT之深入理解QThread 理解QThread之前需要了解下QThread类&#xff0c;QThread拥有的资源如下&#xff08;摘录于QT 5.1 帮助文档&#xff09;&#xff1a;在以上资源中&#xff0c;本文重点关注槽&#xff1a;start()&#xff1b;信号&#xff1a;started()、finished()&#…

常见人事问题

整体素养的常见问题 一、请你自我介绍一下你自己&#xff1f; &#xff08;面试官目的&#xff1a;深度了解求职者&#xff0c;看求职者基本的沟通和自我认知能力&#xff09; NO: 只说姓名、年龄、爱好等基本的信息后就没了。只重复简历里的内容&#xff0c;如工作经验就…

springMVC数据封装成POJO

springMVC把前台的数据封装为POJO与struts2的封装形式不同。struts2需要在控制器声明需封装的POJO&#xff0c;而springMVC不需要任何准备工作&#xff0c;只需在相应的方法的参数中加上需封装的POJO&#xff0c;当用户提交表单时&#xff0c;springMVC会根据表单中dom元素的na…

QT输入输出(四)之 QProcess

QProcess Qt提供了一个QProcess类用于启动外部程序并与之通信.这个类是异步工作的&#xff0c;而且在后台执行&#xff0c;这样用户界面就可以始终保持响应。 启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start()函数即可. 例如&#xff1a; QObj…

iOS 推送 逻辑

推送 阶段一&#xff1a;Provider[服务端]把要发送的消息&#xff0c;目的IOS设备标识打包&#xff0c;发送给APNS&#xff1b; 阶段二&#xff1a;APNS在自身的已注册Push服务的IOS设备列表中&#xff0c;查找有相应标识的IOS设备&#xff0c;并将消息发送到IOS设备&#xff1…

正则提取的url中的域名以及替换域名的方法 preg_match()和preg_replace()

<?php //网站的url$url http://www.baidu.com/index.php;//正则表达式$reg /(http):\/\/([^\/])/i;preg_match($reg, $url,$res);/** $res的结果array (size3)0 > string http://www.baidu.com (length20)1 > string http (length4)2 > string www.baidu.com (…

音视频开发

command s 截模拟器的屏幕 MP.4只是一个容器 H.264 H.263是真正的格式 H.265正在测试中 avi H.264 H.263 视频解码&#xff1a;将H.263 H.264转换为视频和音频的格式 视频编码&#xff1a; 解码&#xff1a;硬解码&#xff1a;GPU做的解码 CPU做除了图片以外的&#…

10.11 安装pod

原文地址&#xff1a;http://www.jianshu.com/p/5fc15906c53a 感谢。 更新升级10.11 cocoapods安装出问题最简单的解决方法 这是因为10.11把cocoapods直接干掉了 sudo gem install -n /usr/local/bin cocoapods 再加一句&#xff0c;完美解决 sudo xcode-select --switch /App…

windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一部分), 内存专用工作集是程序独占的物理内存, 提交大小是程序独占的内存(包含物理内存和在页面文件中的内存). 注:页面文件就是存放不在物理内存中的内存,文件路径一般在C:\pagefile.sys,目的是为了能够让更…