C#要看程式的進度有許多方式
1. 適當地方加入Console.WriteLine
會吐出訊息在編譯器裡面(ex: visual studio的output視窗),開發者自己看的
2. MessageBox.Show
最北爛的方法。有時候連編譯器的output都懶得點去看
直接pop up出來一個視窗,但這也僅限於開發階段
應該沒人會北七到給客戶用的程式
執行的時候跳出一堆不知所云的視窗
3. 用StreamWriter將log寫到外部檔案裏面
無法即時看到程式執行狀態,除非一直刷新外部檔案
通常是用在讓客戶回報問題時,可以附上外部檔案log給開發者偵錯
這會牽扯到開發者log埋得好不好
若埋的地方很爛
拿到log也無法釐清問題
放log的地方應包含 :
(1)執行動作前& 後 ; 各function 裡頭 (以確認程式跑到哪)
(2)重要變數值
(3)Exception message
4. 設斷點(break point)
5. remote debug(需在同網域)
6. Debug View
Debug view 指導手冊 (英文版) 在這邊下載DebugView
(程式設計者應具備閱讀英文文件/論壇的能力,否則中文世界能找到的資訊有限
也不要想指望翻譯軟體,相信我,你會覺得竟然有寧願看英文的時候...)
執行
Admin權限執行Dbgview.exe,執行後會馬上捕捉debug output
程式
build debug mode :程式碼裡頭塞 System.Diagnostics.Debug.WriteLine
build release mode:程式碼裡頭塞 OutputDebugString
更詳細的描述請參考 DebugView 除錯入門
疑難排解
1. Dbgv.sys被lock住
2. 無論是debug / release mode 就是無法將log打印到DebugView
DebugView 除錯入門 裡的一句話救了我 ->該軟體捕獲的是exe直接執行時,丟擲的資訊 ,而不是Visual Studio除錯時的
我原本就是在VS除錯模式下怎樣都試不出來,後來執行build出的exe就成功了
留言列表