我有一個不一致的方法失敗,因此我不能複製任何確定性。調試異步堆棧的預期方法 - 發生了什麼?
我已經捕獲了堆棧跟蹤和這些故障之一的異常(如下)。通常這只是探索堆棧以瞭解代碼如何達到當前狀態的一種情況。
但是由於該方法被標記爲async堆棧跟蹤沒有意義。
我希望能夠檢查各種變量的設置。有沒有人有任何提示/技巧/成熟的方式來處理異步堆棧,以便我可以找到我的問題的根源?
Object reference not set to an instance of an object.
我有一個不一致的方法失敗,因此我不能複製任何確定性。調試異步堆棧的預期方法 - 發生了什麼?
我已經捕獲了堆棧跟蹤和這些故障之一的異常(如下)。通常這只是探索堆棧以瞭解代碼如何達到當前狀態的一種情況。
但是由於該方法被標記爲async堆棧跟蹤沒有意義。
我希望能夠檢查各種變量的設置。有沒有人有任何提示/技巧/成熟的方式來處理異步堆棧,以便我可以找到我的問題的根源?
Object reference not set to an instance of an object.
堆棧跟蹤通常不是在異步代碼可用,因爲它只會告訴你,調用一些異步方法已經失敗。 調試一步一步也沒有,因爲如果它很難重現,它可能是一個時間錯誤,你將永遠不會在調試中重現它。
請使用try/catch並檢查聚合異常。確保你的方法返回一個任務,並且這個任務正在等待,否則你什麼也收不到。
我認爲這MSDN documentation將幫助你正確地捕捉你的錯誤。
您可以使用Async Diagnostics庫與PostSharp獲取邏輯堆棧。看到文章Async Diagnostics blog post
我已經添加了這個,但得到postharp版本控制問題 - 我有點驚訝的東西一樣重要,因爲這隻有1000下載。 –
你不能只調試它,並跟隨你的變量與斷點? –
我會這樣做,但在自動化測試運行期間很少發生 - 所以我必須在那裏坐很久才能看到每個上一步中的變量,希望這是失敗的時間 –
可以看到AggregateException的InnerException更多數據?通常這是一個好看的地方。 –