ヘッダー

VB.NET 2002 対応 VB.NET 2003 対応 VB2005 対応

 

呼び出し履歴を取得する

1.単純な例

VB.NET 2002 対応 VB.NET 2003 対応 VB2005 対応


MsgBox(New StackTrace(True).ToString)
 

 

2.カスタマイズして表示する例

呼び出し履歴順にクラス名・プロシージャ名・ファイル名・行番号をリストボックスに表示する。

VB.NET 2002 対応 VB.NET 2003 対応 VB2005 対応

Public Sub MyProc()

    Dim Proc           As StackFrame
    Dim History        As New StackTrace(True)
    Dim K              As
Integer

    Dim ClassName      As String '呼び出し履歴上のクラス名
   
Dim ProcName       As String '呼び出し履歴上のプロシージャ名
   
Dim SourceFileName As String
   
Dim LineNumber     As Integer

    ListBox1.Items.Clear()

    For K = 0 To History.FrameCount - 1

        'スタックフレームを取得
        Proc = History.GetFrame(K)

        'この履歴のクラス名、プロシージャ名等を取得
       
ClassName = Proc.GetMethod.ReflectedType.Name
        ProcName = Proc.GetMethod.Name
        SourceFileName = Proc.GetFileName
        LineNumber = Proc.GetFileLineNumber

        'リストボックスに表示
       
ListBox1.Items.Add("■" & ClassName & "." & ProcName)

        If Not (SourceFileName Is Nothing) Then
           
ListBox1.Items.Add(SourceFileName)
            ListBox1.Items.Add(LineNumber)
        End
If

    Next K

End Sub

メモ:ファイル名と行番号の取得・表示部分はデバッグビルドされたもののみ正常に動作します。

 

 


VB6には同じ機能は用意されていません。