整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

DebugView调试C井程序 学习总结

ebugView调试C#程序

http://www.cnblogs.com/ahuo/archive/2007/04/09/705886.html

using System;

using System.Collections.Generic;

using System.Text;

using System.Diagnostics;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));

Debug.AutoFlush = true;

Debug.Indent();

Debug.WriteLine("Entering Main"); //显示在DebugView的信息

Console.WriteLine("Hello World.");

Debug.WriteLine("Exiting Main");

Debug.Unindent();

}

}

}

http://files.cnblogs.com/ahuo/dbgview.rar

公共方法

Assert

受 .NET Framework 精简版的支持。

已重载。检查条件,如果该条件为 false,则显示消息。

Close

受 .NET Framework 精简版的支持。

刷新输出缓冲区然后关闭 Listeners。

Fail

受 .NET Framework 精简版的支持。

已重载。发出错误信息。

Flus

受 .NET Framework 精简版的支持。

刷新输出缓冲区并使放入缓冲区的数据写入 Listeners 集合。

Indent 将当前的 IndentLevel 增加 1。

Unindent 将当前的 IndentLevel 减少 1。

Writ

受 .NET Framework 精简版的支持。

已重载。将有关调试的信息写入 Listeners 集合中的跟踪侦听器。

WriteI

受 .NET Framework 精简版的支持。

已重载。如果条件为 true,则将有关调试的信息写入 Listeners 集合中的跟踪侦听器。

WriteLine

受 .NET Framework 精简版的支持。

已重载。将有关调试的信息写入 Listeners 集合中的跟踪侦听器。

WriteLineIf

受 .NET Framework 精简版的支持。

已重载。如果条件为 true,则将有关调试的信息写入 Listeners 集合中的跟踪侦听器。

========

用DebugView调试C#程序

http://blog.csdn.net/gaoxiang19820514/article/details/6649907

1.引用

using System.Diagnostics;

2.显示在DebugView的信息

Debug.WriteLine(DateTime.Now.ToString("HH-mm-ss")+" "+DateTime.Now.Millisecond.ToString() + " cti_message", "my");

3.在Dbgview.exe 过滤其它信息

Edit -> Filter/Hightlight... -> include: 中输入 *my

点击OK后,便可用DebugView调试C#程序了。

========

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 plain copy

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)

[csharp] view plain copy

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通用)

[csharp] view plain copy

for (int i = 0; i < 50; i++)

{

System.Diagnostics.Debugger.Log(0, null, "测试DebugView!!release");

}

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

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

[csharp] view plain copy

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]

public static extern void OutputDebugString(string message);

2、使用:

[csharp] view plain copy

<pre name="code" class="csharp"> for (int i = 0; i < 50; i++)

{

OutputDebugString("测试DebugView!JianKunKing");

}

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

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

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

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

[plain] view plain copy

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命令:点击打开链接

========

DebugView使用详解

http://www.cnblogs.com/wolfrickwang/p/3295925.html

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

在程序中使用如下函数:

1> OutputDebugString 或者在MFC中使用TRACE

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

编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独运行),打开debugview 就可以在其中看到输出的调试信息。

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

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

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

isual c++ 供 了 功 能 强 大 的 类 库, 基 本 上 用 开 发 的 要 求, 但 对 于 某 特 殊 要 面, 如 图 像 兼 文 字 的 按 , 列 表 框 中 入 图 像, 中 国 报 表 等 等, 仍 得 力 不 从 心, 因 而 很 有 必 要 创 建 扩 展MFC 类 库, 以 满 足 实 际 开 发 的 求。But,Toolkit Pro 是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件。 根据需要可进行下载体验!

本文通过实例说明MFC工具栏的创建、设计和使用方法,包括三个demo。

demo1:创建一个工具栏

C++代码

//摘抄自MSDN
demo1 (创建一个工具栏)
1.Create a toolbar resource.
/*可以先插入一个新的工具栏资源
添加分隔符,将按钮向右拖动一小下
删除按钮,将按钮拖动出工具栏
*/
2.Construct the CToolBar object.
/*
工具栏是 CToolBar 对象,声明为应用程序的 CMainFrame 类的数据成员。也就是说,工具栏对象嵌入到主框架窗口对象中。这意味着 MFC 在创建框架窗口时创建工具栏,在销毁框架窗口时销毁工具栏。
*/
3.Call the Create (or CreateEx) function to create
the Windows toolbar and attach it to the CToolBar object.
4.Call LoadToolBar to load the toolbar resource.
/*
工具栏创建发生在 CMainFrame::OnCreate 中。MFC 在创建框架窗口之后且在窗口可见之前调用 OnCreate。
在 OnCreate 中调用适当的函数来停靠或浮动工具栏、设置它的样式等。
应用程序向导”生成的默认 OnCreate 执行以下工具栏任务:
1.调用 CToolBar 对象的 Create 成员函数来创建基础 CToolBarCtrl 对象。
2.调用 LoadToolBar 来加载工具栏资源信息。
3.调用函数来启用停靠、浮动和工具提示。
*/
class CMainFrame : public CMDIFrameWnd
{
// ...
// Implementation
// ...
protected:  // control bar embedded members
CStatusBar  m_wndStatusBar;
CToolBar    m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//框架类中m_wndMyToolBar成员变量先调用CreateEx函数,再调用LoadToolBar函数
if (! m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
! m_wndToolBar.LoadToolBar(IDR_MYTOOLBAR))
{
TRACE0("Failed to create toolbar\n");
return -1;      // fail to create
}
//调用CToolBar中的成员函数设置工具栏可停靠的位置
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//调用框架类中的成员函数设置哪里可以被停靠
EnableDocking(CBRS_ALIGN_ANY);
//Points to the control bar to be docked.
DockControlBar(&m_wndToolBar);
return 0;
}


demo2:停靠和浮动工具栏


C++代码


demo2 (停靠和浮动工具栏)
/*
如果使用“应用程序向导”来生成应用程序的主干,向导将要求您选择是否想要可停靠的工具栏。
默认情况下,“应用程序向导”生成代码来执行将可停靠工具栏放置在应用程序中所需的三个操作:
1.在框架窗口中启用停靠。
2.为工具栏启用停靠。
3.停靠工具栏(靠向框架窗口)。
如果这些步骤中的任何一个缺少,应用程序都将显示标准工具栏。
后两个步骤对应用程序中的每一个可停靠工具栏都必须执行。
*/
CFrameWnd::EnableDocking()//在框架窗口中启用停靠
/*
若要将工具栏停靠到某个框架窗口,则必须启用该框架窗口(或目标)以允许停靠。
这可通过使用 CFrameWnd::EnableDocking 函数来实现,该函数采用一个 DWORD 参数,这是一组指示框架窗口的哪一个边接受停靠的样式位。
如果一个工具栏即将停靠并且有多个边可以停靠,则在传递给 EnableDocking 的参数中指示的边按以下顺序使用:顶边、底边、左边、右边。
如果希望能够将控制条停靠在任意位置,请将 CBRS_ALIGN_ANY 传递给 EnableDocking。
*/
CControlBar::EnableDocking()//为工具栏启用停靠
/*
准备好停靠目标后,必须以相似的方式准备工具栏(或源)。为想要停靠的每一个工具栏调用 CControlBar::EnableDocking,指定工具栏应停靠的目标边。如果在 CControlBar::EnableDocking 调用中所指定的边没有一个与框架窗口中为停靠启用的边匹配,则工具栏无法停靠(它将浮动)。
工具栏一旦浮动,将保持为浮动工具栏,不能停靠到框架窗口。
如果希望工具栏永久浮动,请调用参数为 0 的 EnableDocking。然后调用 CFrameWnd::FloatControlBar。工具栏将保持浮动,永远不能在任意位置停靠。
*/
CFrameWnd::DockControlBar()//停靠工具栏
/*
当用户试图将工具栏放置在允许停靠的框架窗口某一边时,框架调用 CFrameWnd::DockControlBar。
另外,可以随时调用该函数将控制条停靠在框架窗口中。这通常在初始化过程中完成。
框架窗口的具体某个边上可停靠多个工具栏。
*/
CFrameWnd::FloatControlBar()//浮动工具栏
/*
从框架窗口分离可停靠工具栏称为浮动工具栏。调用 CFrameWnd::FloatControlBar 来执行该操作。指定要浮动的工具栏、将放置的点以及决定浮动工具栏是水平还是垂直的对齐样式。
当用户拖动工具栏离开停靠位置并将它放置在一个未启用停靠的位置时,框架调用该函数。
这可以是框架窗口的内部或外部的任意位置。同 DockControlBar 一样,也可以在初始化过程中调用该函数。
可停靠工具栏的 MFC 实现不提供一些支持可停靠工具栏的应用程序中有的扩展功能。诸如可自定义工具栏这样的功能不提供。
*/
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//...
//部分代码略
//...
//调用CToolBar中的成员函数设置工具栏可停靠的位置
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
//调用框架类中的成员函数设置哪里可以被停靠
EnableDocking(CBRS_ALIGN_ANY);
//Points to the control bar to be docked.
DockControlBar(&m_wndToolBar);
return 0;
}

demo3:点击菜单项显示和隐藏工具栏

C++代码

demo3 (点击菜单项显示和隐藏工具栏)
CFrameWnd::ShowControlBar//显示和隐藏菜单项
void ShowControlBar( CControlBar* pBar, BOOL bShow, BOOL bDelay );
void CMainFrame::OnViewNewtool()
{
ShowControlBar(&m_newToolBar,!m_newToolBar.IsWindowVisible(),FALSE);//控制显示和隐藏
}
void CMainFrame::OnUpdateViewNewtool(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());//为菜单项打标记
}

MFC扩展类库

在平时练习的时候我们可以自己手动进行,但是一旦接受一些项目,应用程序开发等,对界面的要求就会高出许多。这时候就有必要借助这些“半成品”实现界面美化提升效率。这里简单介绍一下,具体可点进去查看每个的详情以及教程,案例!

Toolkit Pro

Codejock软件公司的Xtreme Toolkit Pro是屡获殊荣的VC界面库,是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。

BCGControlBar ("Business Components Gallery ControlBar")是MFC扩展库,使您可以创建具有完全自定义选项(功能区、可自定义工具栏、菜单等)以及一组专业设计的丰富Microsoft Office和Microsoft Visual Studio的应用程序 GUI控件,例如图表、日历、网格、编辑器、甘特图和许多其他控件。
BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。可以轻松地集成到你的应用程序中,并为你节省数百个开发和调试时间。

转载自:http://www.jizhuomi.com/software/494.html

关注我或者点击下方“了解更多”获取一手开发资讯哦!

爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v30.4正式发布!此版本包含适用于Visual Studio 2017-2019的新应用程序向导,Ribbon后台视图位于底部项目、新的图表类型Polar Bar、改进的甘特图以及其他新的功能和改进。

点击“了解更多”获取【BCG下载】

v30.4引入了适用于Visual Studio 2017和Visual Studio 2019的新应用程序向导,该向导极大地简化了基于BCGControlBar的新应用程序的创建,您可以在几秒内创建Visual Studio、Office或类似Explorer的应用程序。如果出于某种原因您更喜欢使用经典(基于HTML)的应用程序向导,则可以在Integration Wizard设置中指定此选项。

Ribbon Bar

1. BCGPBaseRibbonElement:新方法IsOnActiveFrame告知ribbon控件是否位于活动(聚焦)的框架上。

2. CBCGPBaseRibbonElement:新方法IsOnZoomedFrame告诉ribbon控件是否位于最大化(缩放)帧上。

3. CBCGPRibbonSlider:添加对"Zoom In" ("+") / "Zoom Out" ("-") 按钮工具提示的支持,方法CBCGPRibbonSlider :: SetZoomButtons具有2个新的可选参数'lpszZoomInTooltip'和'lpszZoomOutTooltip'。

4. 改进对键盘导航的支持:通过单击鼠标激活的edit box / combo box控件中的Tab键实现了导航。

5. CBCGPRibbonPaletteButton(功能区库):改进对高DPI的支持。

6. Ribbon后台视图:添加对位于左侧窗格底部的命令/视图的支持,方法CBCGPRibbonBackstageViewPanel :: AddCommand,CBCGPRibbonBackstageViewPanel :: AddView,CBCGPRibbonBackstageViewPanel :: AddPrintPreview和CBCGPRibbonBackstageViewPanel :: AddRecentView具有新的可选参数'bAddToBottom'(默认值为FALSE)。

7. CBCGPRibbonCaptionCustomButton:新的虚拟方法OnDrawContent提供了自定义功能区标题按钮外观的简便方法。

8. Ribbon Designer:新增对滑块缩放按钮工具提示的支持和后台视图底部项目。

Chart Control

1. 简化图表文本标签自定义过程:将新方法OnFormatDataPointLabelText和OnFormatDataPointTableText添加到CBCGPChartVisualObject类。

2. 图表数据表:改进表格单元水平滚动(缩放/平移模式)。

3. 添加置顶缩略图选项的新标志:

  • BCGP_CHART_THUMBNAIL_DRAW_SERIES_NAME
  • BCGP_CHART_THUMBNAIL_DRAW_OBJECTS
  • BCGP_CHART_THUMBNAIL_NO_DRAW_AXIS_LABELS

4. 添加一种新型的极坐标图-极坐标条形图,条形图的范围(宽度)使用Y1分量以度为单位设置,极坐标图的类型可以使用CBCGPChartPolarSeries:SetPolarType(PolarSeriesType type,BOOL bRedraw = TRUE)方法指定,其中类型可以是PST_NORMAL或PST_BAR。

5. 极坐标图和雷达图:改进图的布局,现在更优化地使用了图表空间。

6. 金字塔和漏斗图:改进了图表元素(例如数据点)的命中测试。