消えると困るのでコピペ
コピペ元
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
メモ:ファイル名と行番号の取得・表示部分はデバッグビルドされたもののみ正常に動作します。