查看單個文章
舊 2018-08-11, 12:12 PM   #1
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時級別:97 | 在線時長:9909小時 | 升級還需:87小時
註冊日期: 2002-12-07
文章: 13365
精華: 0
現金: 26507 金幣
資產: 3024417 金幣
預設 好用的"發行後"除錯技倆 (For VB.NET)

除錯很重要
但百密還是會有一疏 (像MS這麼多高手,但每個月還是 SP發送個沒完)
而軟體寫到差不多後,就可對外發表/發行
但如果使用者使用時發生問題
如果沒有除錯資訊供摻考那就很難修正

這裡提供一個 個人經驗
方法不難
首先盡量在 每個函式/副程式 內填入以下制式文字
PHP 語法:
Private Sub 函式A(As Args)
     
On Error GoTo LB_ErrorHandler

     
~程式碼~

     Exit 
Sub
LB_ErrorHandler
:
     
除錯用.內文 "函式A"
     
Resume Next
End Sub 
接著VB加入一個類別
Public 除錯用 As New 除錯用Class
PHP 語法:
Public Class 除錯用Class

    
Private s內文 As String ""    Public Property 內文() As String
        Get
            
Return s內文
        End Get
        Set
(ByVal value As String)
            If 
value.Length 0 Then
                s內文 
s內文 Now.ToString ":[" UnsafeNativeMethods.GetTickCount "] ~ " _
                        value 
"發生在程式:" Err.Erl.ToString " 行" vbNewLine _
                        Err
.Description vbNewLine vbNewLine
                Err
.Clear()
                If 
Main_Form.錯誤LogToolStripMenuItem.Enabled False Then Main_Form.錯誤LogToolStripMenuItem.Enabled True
            End 
If
        
End Set
    End Property

    
Public Sub 清除()
        
s內文 ""
    
End Sub

End 
Class 
最後在整個軟體結尾加一行
PHP 語法:
If 除錯用.內文.Length 10 Then
    My
.Computer.FileSystem.WriteAllText(fn_LogFileName除錯用.內文True)
End If 
以上就完成了
如果 函式A 在運行時發生錯誤
就會得到 fn_LogFileName 錯誤資訊檔
P.S. fn_LogFileName As String 須定義檔名及路徑

以上這個方法可以得到很強的容錯能力(不容易使軟體執行崩毀)
又可得到除錯資訊

此帖於 2018-08-19 10:35 AM 被 mini 編輯. 原因: 改良
mini 目前線上  
送花文章: 2018, 收花文章: 8013 篇, 收花: 26822 次
回覆時引用此帖