[英]How do I get the return value while debugging?
我看了看SO,但找不到答案,我確定它在那里雖然......?
在調試時,如果我在其上放置斷點,如何獲取return語句的值? 我喜歡凝聚成一條線,只是看起來很漂亮。 但我目前沒有,因為我無法弄清楚如何調試返回的結果......?
using (IUnitOfWork context = new EFUnitOfWork())
{
var repo = new ReportRepository(context);
return repo.GetProcedureReport(startDate, endDate).ToList();
//return result.ToList();
}
在VS 2013中,您可以將變量$ ReturnValue添加到手表中。 它包含函數的實際返回值。
選擇方法並單擊鼠標右鍵。 從菜單中選擇Quickwatch。
我假設你不能在GetProcedureReport
放一個斷點?
您正在嘗試的返回值調試類型對於C#等托管語言是不可能的。 C ++調試器通過autos窗口提供此信息,但不提供托管語言。
主要原因是CLR調試引擎根本不提供此值。 對於C#,VB或F#來提供這個,他們需要重寫每個return語句以將值溢出到臨時值然后返回臨時值。 然后可以通過在調試器中顯示臨時值來實現返回值調試。
var returnTemp = repo.GetProcedureReport(startDate, endDate).ToList();
return returnTemp;
這可以工作,但它會給代碼帶來負面影響。 最值得注意的是,大結構值最終會被復制兩次並對性能產生負面影響。 此外,這種重寫需要在編譯時進行,並且會影響正在編譯的每個方法。 如果可以在調試時按需完成,那么影響會小得多。 這些消極因素只是權衡了這里的好處。
請注意,VB.Net確實在很小程度上提供了返回值調試。 我在博客上寫了這是如何工作的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.