整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          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. 金字塔和漏斗圖:改進了圖表元素(例如數據點)的命中測試。


          主站蜘蛛池模板: 尤物精品视频一区二区三区| 一区二区视频传媒有限公司| 果冻传媒一区二区天美传媒| 亚洲一区二区女搞男| 激情无码亚洲一区二区三区| 狠狠色婷婷久久一区二区| 亚洲一区中文字幕久久| 国产一区二区三区在线| 国产精品亚洲一区二区三区久久 | 爱爱帝国亚洲一区二区三区| 人妻少妇一区二区三区| 一区二区三区人妻无码| 亚洲色精品vr一区二区三区| 亚洲一区二区三区91| 国产一区二区在线观看app| 国产在线精品一区二区三区直播 | 精品久久综合一区二区| 国产精品免费一区二区三区四区| 中文精品一区二区三区四区| 日韩视频一区二区| 亚洲一区二区三区国产精品无码| 国产日韩精品一区二区三区| 无码精品人妻一区二区三区免费 | 国产成人精品一区二三区| 成人一区专区在线观看| 天堂一区二区三区精品| 国产成人精品无人区一区| 亚洲人成网站18禁止一区| 真实国产乱子伦精品一区二区三区 | 色噜噜狠狠一区二区| 日韩精品一区二区三区国语自制 | 乱码人妻一区二区三区| 无码精品人妻一区二区三区影院| 精品少妇一区二区三区视频| 一区二区三区免费在线视频| 国产一区二区在线观看麻豆| 亚洲国产精品一区二区第四页| 中文乱码人妻系列一区二区| 女人18毛片a级毛片一区二区| 69久久精品无码一区二区| 无码一区二区三区在线|