C#Portable Class Library等效于System.Diagnostics.StackTrace

时间:2014-12-27 09:05:53

标签: c# debugging portable-class-library

我正在处理的程序有一个适当命名的记录功能"错误,"但是,为了在不崩溃程序的情况下通知错误,我希望包含堆栈跟踪,以便更容易地调试这些非致命错误。我的第一直觉是使用System.Diagnostics.StackTrace,遗憾的是在PCL中没有。{1}}。

然后,我试图抛出并立即捕获异常。

try { throw new Exception(); } 
catch (Exception ex) { return ex.StackTrace; }

不幸的是,这只提供了调用堆栈的顶部:因为它没有解开堆栈,所以它没有提供任何有用的信息。所以,我的问题是这样的:如何在ac#PCL函数中获得堆栈跟踪而不会抛出错误并将其捕获到堆栈的底部?我更希望将代码完全保留在堆栈的底部PCL并避免使用抽象和平台特定的实现代码来做一些如此微不足道的事情。

编辑作为对注释的响应:`throw new Exception(ex)仅向堆栈跟踪添加另一个层,因此它在堆栈跟踪功能中有两行但仍无法检索完整的跟踪。

1 个答案:

答案 0 :(得分:-2)

尝试使用Environment.StackTrace property

  

StackTrace属性以反向时间顺序列出方法调用   顺序,即,最先描述最近的方法调用,和   为每个方法调用列出一行堆栈跟踪信息   堆栈。但是,StackTrace属性可能不会报告多少   方法由于在期间发生的代码转换而按预期调用   优化

编辑:

版本说明似乎说明Environment class is supported by PCL

  

版本信息.NET Framework受以下版本支持:4.6,4.5,4,3.5,   3.0,2.0,1.1,1.0 .NET Framework Client Profile受以下版本支持:4,3.5 SP1可移植类库受以下版本支持:可移植类库.NET   for Windows Store apps受以下版本支持:Windows 8受以下版本支持:Windows   Phone 8.1受以下版本支持:Windows Phone Silverlight 8.1受以下版本支持:   Windows Phone Silverlight 8

相关问题