コールヒストリ 呼び出し履歴を取得する

消えると困るのでコピペ

コピペ元

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

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