表紙へ

VB.NET

呼び出し履歴を取得する

 

1.単純な例


MsgBox(New StackTrace(True).ToString)
 

 

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

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

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には同じ機能は用意されていません。