史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   好用的"發行後"除錯技倆 (For VB.NET) (http://forum.slime.com.tw/thread288471.html)

mini 2018-08-11 12:12 PM

好用的"發行後"除錯技倆 (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 須定義檔名及路徑

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

飛行船大大 2023-05-22 02:39 AM

其實原理 就和VB6寫法相似. 只是指令80%相同 20%不同而已
 
引用:

作者: mini (文章 2374563)
除錯很重要
但百密還是會有一疏 (像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 了


所有時間均為台北時間。現在的時間是 03:50 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1