查看單個文章
舊 2023-05-22, 02:39 AM   #2 (permalink)
飛行船大大
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時級別:14 | 在線時長:264小時 | 升級還需:21小時
註冊日期: 2007-10-09
文章: 172
精華: 0
現金: 311 金幣
資產: 7311 金幣
Thumbs up 其實原理 就和VB6寫法相似. 只是指令80%相同 20%不同而已

引用:
作者: mini 查看文章
除錯很重要
但百密還是會有一疏 (像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 須定義檔名及路徑

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

其實原理 就和VB6寫法相同. 只是指令80%相同 20%不同而已 並改稱為PHP 了
飛行船大大 目前離線  
送花文章: 178, 收花文章: 61 篇, 收花: 139 次
回覆時引用此帖