在 C# 中获取当前函数的调用栈帧信息需要用到一个叫 StackTrace 的类和一个叫 StackFrame。前者记录了当前调用栈跟踪数据,后者表示一个栈帧。
简单地说,假设有A->B->C
的调用链,其表示 A 调用 B,B 调用 C。那么 A、B、C 三者这一层调用关系链即叫作栈跟踪(StackTrace),而它们其中之一则叫作一个栈帧(StackFrame)。
以下的代码简单地介绍了如何在 C# 中使用这两个类来获取当前的函数调用信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
以下是示例输出:
文件:c:\Users\admin\Desktop\StackTrace\Program.cs
函数:TraceStack
行号:10
文件:c:\Users\admin\Desktop\StackTrace\Program.cs
函数:MyMethod
行号:26
文件:c:\Users\admin\Desktop\StackTrace\Program.cs
函数:Main
行号:32
-----------------------------------------------------------
文件:c:\Users\admin\Desktop\StackTrace\Program.cs
函数:TraceStack
行号:14
文件:c:\Users\admin\Desktop\StackTrace\Program.cs
函数:Main
行号:35
-----------------------------------------------------------
文件:
函数:TraceStack
行号:0
文件:
函数:Main
行号:0
一共3部分。第1部分是 Debug 版本的输出;第2部分是 Release(带PDB) 版本的输出;第3部分是 Release(不带PDB) 版本的输出。