[英]exception stack trace
關於調試和釋放模式下的堆棧跟蹤深度。 我得出以下結論(調用exception.ToString()):
在調試模式下,您可以在發布模式下獲得包含行號(幾個幀)的完整堆棧跟蹤,而不是完整的堆棧跟蹤,只能獲得帶有行號的try塊(單幀)中的拋出方法
你好,
我想記錄異常詳細信息日志應該包括所有堆棧跟蹤(鏈中的所有方法)log shoud包括堆棧跟蹤中每個方法的行號。
我一直在調試和發布模式中嘗試兩種方法。 我不喜歡結果:
在調試模式下,兩者都返回完整的堆棧跟蹤,行號為:-)在發布模式下,兩者都只返回catch方法的詳細信息。 一個人真的不能
知道try塊中的哪個調用失敗了
任何人都可以解釋一下嗎? 另外,當引用來自catch塊中調用的其他方法的異常時,excepyion的堆棧跟蹤信息是丟失的
謝謝
option1: exception.ToString-
選項2:相同的結果(見下文)
calling static method receving the exception as parameter
System.Diagnostics.StackTrace exceptionStackTrace =
new System.Diagnostics.StackTrace(e, true);
System.Diagnostics.StackFrame [] exceptionStackFrames =
exceptionStackTrace.GetFrames();
foreach (System.Diagnostics.StackFrame stackFrame in exceptionStackFrames)
{
message += String.Format("at {0} {1} line {2} column {3} \n",
stackFrame.GetFileName() == null ? string.Empty : stackFrame.GetFileName(),
stackFrame.GetMethod().ToString(),
stackFrame.GetFileLineNumber(),
stackFrame.GetFileColumnNumber());
}
調試版本包含比發布版本更多的信息,以協助調試,包括行號等內容。
此信息存在於pdb
文件中 - 如果您未在已發布的應用程序中包含這些信息,則無法獲取堆棧跟蹤中的行號。
按照此 SO答案上的說明啟用發布版本中的行號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.