史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2018-08-11, 12:12 PM   #1
mini
管理版主
 
mini 的頭像
榮譽勳章
UID - 4144
在線等級: 級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時級別:96 | 在線時長:9661小時 | 升級還需:136小時
註冊日期: 2002-12-07
文章: 13247
精華: 0
現金: 26237 金幣
資產: 3024047 金幣
預設 教學 - 好用的"發行後"除錯技倆 (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 目前離線  
送花文章: 1999, 收花文章: 7956 篇, 收花: 26748 次
回覆時引用此帖
舊 2023-05-22, 02:39 AM   #2 (permalink)
註冊會員
 
飛行船大大 的頭像
榮譽勳章
UID - 282126
在線等級: 級別:13 | 在線時長:238小時 | 升級還需:14小時級別:13 | 在線時長:238小時 | 升級還需:14小時級別:13 | 在線時長:238小時 | 升級還需:14小時
註冊日期: 2007-10-09
文章: 156
精華: 0
現金: 282 金幣
資產: 7282 金幣
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 了
飛行船大大 目前離線  
送花文章: 169, 收花文章: 55 篇, 收花: 132 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用

相似的主題
主題 主題作者 討論區 回覆 最後發表
各位大大快救救我啊~~" jasoncute 一般電腦疑難討論區 7 2004-09-14 01:39 AM
COM, COM+ and .NET 的區別 psac 程式 & 網頁設計技術文件 0 2004-06-24 03:56 PM
Visual Basic .NET(繁體中文) a791004 一般電腦疑難討論區 9 2004-03-07 05:50 PM
"C" 槽最近多了一個不明檔案!! jay0505 一般電腦疑難討論區 7 2003-10-08 11:39 PM
請問~ Net Transport 影音傳送帶,要怎麼設"加入批次工作"? 輪子弟 軟體應用問題討論區 3 2003-04-17 06:06 PM


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


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


SEO by vBSEO 3.6.1