DebugView 除錯入門
軟體下載地址:點選開啟連結
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命令:點選開啟連結
相關文章
- 前端除錯入門前端除錯
- Kafka除錯入門(一)Kafka除錯
- .NET高階除錯系列-Windbg除錯入門篇高階除錯
- Node 除錯工具入門教程除錯
- Google Chrome除錯js入門GoChrome除錯JS
- Xcode Instruments除錯swift入門教程XCode除錯Swift
- GDB除錯-從入門到實踐除錯
- NodeMCU入門:燒錄、除錯、聯網除錯
- 程式碼除錯-入門、實踐到原理除錯
- 前端入門技巧之瀏覽器除錯前端瀏覽器除錯
- Mqtt入門:線上除錯連線阿里雲MQQT除錯阿里
- 攝像頭 ISP 除錯的入門之談(經驗總結)除錯
- gdb除錯傳入引數除錯
- 從零入門 Serverless | SAE 的遠端除錯和雲端聯調Server除錯
- 除錯篇——除錯物件與除錯事件除錯物件事件
- Python 偵錯程式入門Python
- WordPress開發入門01:Windows本地安裝WordPress和PHP除錯環境WindowsPHP除錯
- React Native基礎&入門教程:除錯React Native應用的一小步React Native除錯
- PyCharm入門第一步(二):除錯第一個Python應用程式PyCharm除錯Python
- Windows windbg kernel debug 雙機核心除錯 - USB3.0 除錯 USB除錯 除錯線Windows除錯
- git 入門教程之刪除檔案Git
- 微服務容錯限流Hystrix入門微服務
- Python 入門級報錯處理Python
- IsDebuggerPresent的反除錯與反反除錯除錯
- Python 程式碼除錯—使用 pdb 除錯Python除錯
- nginx 錯誤除錯Nginx除錯
- Spark原始碼編譯與匯入IDEA除錯Spark原始碼編譯Idea除錯
- MySql輕鬆入門系列——第二站 使用visual studio 對mysql進行原始碼級除錯MySql原始碼除錯
- SpringCloudAlibaba-服務容錯Sentinel(入門)SpringGCCloud
- 除錯toybox除錯
- Linux除錯Linux除錯
- postman除錯Postman除錯
- gdb除錯除錯
- 前端除錯前端除錯
- python 除錯Python除錯
- LLDB除錯LLDB除錯
- 除錯環境 寶塔 mysql root 遠端登入除錯MySql
- Linux核心模組驅動載入與dmesg除錯Linux除錯
- vscode快速構建Flutter專案+熱載入除錯VSCodeFlutter除錯