为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2019-11-25 15:04:18
我有一个常规的C#代码。我也不例外。我想以编程方式记录当前堆栈跟踪以进行调试。例:public void executeMethod() {    logStackTrace();    method();}
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

看一下System.Diagnostics名称空间。里面有很多东西!


System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();

兜一圈学习引擎盖下的情况,这真的很好。


我建议您看看可以实现您的目的的日志记录解决方案(例如NLog,log4net或Microsoft模式和实践企业库)。祝你好运!


查看完整回答
反对 回复 2019-11-25
?
FFIVE

TA贡献1797条经验 获得超6个赞

一种替代方法System.Diagnostics.StackTrace是使用System.Environment.StackTrace,它返回堆栈跟踪的字符串表示形式。


另一个有用的选项是在Visual Studio中使用$CALLER和$CALLSTACK 调试变量,因为可以在运行时启用它,而无需重建应用程序。


查看完整回答
反对 回复 2019-11-25
?
慕斯王

TA贡献1864条经验 获得超2个赞

您也可以在Visual Studio调试器中执行此操作,而无需修改代码。

  1. 在要查看堆栈跟踪的位置创建一个断点。

  2. 右键单击断点,然后在VS2015中选择“操作...”。在VS2010中,选择“当被点击时...”,然后启用“打印消息”。

  3. 确保选择“继续执行”。

  4. 输入一些您想打印的文字。

  5. 在任何要查看堆栈跟踪的位置添加$ CALLSTACK。

  6. 在调试器中运行程序。

当然,如果您在另一台计算机上运行代码,这无济于事,但是能够自动吐出堆栈跟踪信息而又不影响发行代码或什至无需重启程序都非常方便。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信