簡體   English   中英

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

[英]C# Portable Class Library Equivalent of System.Diagnostics.StackTrace

我正在處理的程序有一個適當命名為“Error”的日志記錄功能,用於通知錯誤而不會導致程序崩潰,但是,我想包含一個堆棧跟蹤,以便更容易調試這些非致命錯誤。 我的第一直覺是使用System.Diagnostics.StackTrace ,遺憾的是在PCL中沒有。

然后,我試圖拋出並立即捕獲異常。

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

不幸的是,這只提供了調用堆棧的頂層:因為它沒有解開堆棧,所以它不提供任何有用的信息。 所以,我的問題是: 如何在ac#PCL函數中獲得堆棧跟蹤而不會拋出錯誤並將其捕獲到堆棧的底部? 我更願意將代碼完全保留在PCL中,並避免使用抽象和平台特定的實現代碼來實現這么簡單的事情。

編輯為對注釋的響應:`throw new Exception(ex)僅向堆棧跟蹤添加另一個層,因此它在堆棧跟蹤功能中有兩行但仍無法檢索完整跟蹤。

嘗試使用Environment.StackTrace屬性

StackTrace屬性按反向時間順序列出方法調用,即首先描述最近的方法調用,並為堆棧上的每個方法調用列出一行堆棧跟蹤信息。 但是,由於優化期間發生的代碼轉換,StackTrace屬性可能不會報告與預期一樣多的方法調用。

編輯:

版本描述似乎表明PCL支持Environment類

版本信息.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商店應用程序受以下版本支持:Windows 8受以下版本支持:Windows Phone 8.1受以下版本支持:Windows Phone Silverlight 8.1受以下版本支持:Windows Phone Silverlight 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM