DebugView 除錯入門

衣舞晨風發表於2015-04-10

軟體下載地址:點選開啟連結

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命令:點選開啟連結



相關文章