猿问

如何毫无例外地在.NET中打印当前的堆栈跟踪?

我有一个常规的C#代码。我也不例外。我想以编程方式记录当前堆栈跟踪以进行调试。例:


public void executeMethod() 

{

    logStackTrace();

    method();

}


慕斯709654
浏览 715回答 3
3回答

守候你守候我

看一下System.Diagnostics名称空间。里面有很多东西!System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();兜一圈学习引擎盖下的情况,这真的很好。我建议您看看可以实现您的目的的日志记录解决方案(例如NLog,log4net或Microsoft模式和实践企业库)。祝你好运!

FFIVE

一种替代方法System.Diagnostics.StackTrace是使用System.Environment.StackTrace,它返回堆栈跟踪的字符串表示形式。另一个有用的选项是在Visual Studio中使用$CALLER和$CALLSTACK 调试变量,因为可以在运行时启用它,而无需重建应用程序。

慕斯王

您也可以在Visual Studio调试器中执行此操作,而无需修改代码。在要查看堆栈跟踪的位置创建一个断点。右键单击断点,然后在VS2015中选择“操作...”。在VS2010中,选择“当被点击时...”,然后启用“打印消息”。确保选择“继续执行”。输入一些您想打印的文字。在任何要查看堆栈跟踪的位置添加$ CALLSTACK。在调试器中运行程序。当然,如果您在另一台计算机上运行代码,这无济于事,但是能够自动吐出堆栈跟踪信息而又不影响发行代码或什至无需重启程序都非常方便。
随时随地看视频慕课网APP
我要回答