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