2017-04-26 26 views
0

我有一個不一致的方法失敗,因此我不能複製任何確定性。調試異步堆棧的預期方法 - 發生了什麼?

我已經捕獲了堆棧跟蹤和這些故障之一的異常(如下)。通常這只是探索堆棧以瞭解代碼如何達到當前狀態的一種情況。

但是由於該方法被標記爲async堆棧跟蹤沒有意義

我希望能夠檢查各種變量的設置。有沒有人有任何提示/技巧/成熟的方式來處理異步堆棧,以便我可以找到我的問題的根源?

async stack trace

Object reference not set to an instance of an object. 
+0

你不能只調試它,並跟隨你的變量與斷點? –

+0

我會這樣做,但在自動化測試運行期間很少發生 - 所以我必須在那裏坐很久才能看到每個上一步中的變量,希望這是失敗的時間 –

+0

可以看到AggregateException的InnerException更多數據?通常這是一個好看的地方。 –

回答

0

堆棧跟蹤通常不是在異步代碼可用,因爲它只會告訴你,調用一些異步方法已經失敗。 調試一步一步也沒有,因爲如果它很難重現,它可能是一個時間錯誤,你將永遠不會在調試中重現它。

請使用try/catch並檢查聚合異常。確保你的方法返回一個任務,並且這個任務正在等待,否則你什麼也收不到。

我認爲這MSDN documentation將幫助你正確地捕捉你的錯誤。

4

您可以使用Async Diagnostics庫與PostSharp獲取邏輯堆棧。看到文章Async Diagnostics blog post

+0

我已經添加了這個,但得到postharp版本控制問題 - 我有點驚訝的東西一樣重要,因爲這隻有1000下載。 –

相關問題