在没有异常的情况下在 .NET 中记录堆栈跟踪
调试代码时,打印当前堆栈跟踪对于理解程序流程和识别问题。但是,在没有发生异常的情况下,使用 try-catch 块或 Exception.StackTrace 属性的标准方法将不起作用。
解决方案
要无异常地打印当前堆栈跟踪,请使用 System.Diagnostics.StackTrace 类:
System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();
t 将包含有关当前执行的方法及其调用者等的信息,直到程序的入口点。
示例
考虑以下代码:
public void executeMethod() { logStackTrace(); method(); }
如果我们调用executeMethod()然后打印堆栈跟踪,我们会看到一些东西例如:
at executeMethod() in C:\Path\To\MyCode.cs:line 10 at method() in C:\Path\To\MyCode.cs:line 15 at Program.Main() in C:\Path\To\MyMain.cs:line 20
此跟踪向我们显示了调用堆栈,即使没有发生异常。
其他资源
用于进一步的调试工具,探索 System.Diagnostics 命名空间。 NLog、log4net 和 Enterprise Library 等日志框架提供了全面的日志解决方案,包括捕获堆栈跟踪的能力。
以上是如何在 .NET 中记录堆栈跟踪而不出现异常?的详细内容。更多信息请关注PHP中文网其他相关文章!