close

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就成功了

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 iam9527 的頭像
    iam9527

    翁丸的育兒筆記

    iam9527 發表在 痞客邦 留言(0) 人氣()