簡體   English   中英

異常堆棧跟蹤

[英]exception stack trace

關於調試和釋放模式下的堆棧跟蹤深度。 我得出以下結論(調用exception.ToString()):

在調試模式下,您可以在發布模式下獲得包含行號(幾個幀)的完整堆棧跟蹤,而不是完整的堆棧跟蹤,只能獲得帶有行號的try塊(單幀)中的拋出方法

  • 真的嗎 ? - 有沒有辦法在發布模式下獲得完整的堆棧tracve?

你好,

我想記錄異常詳細信息日志應該包括所有堆棧跟蹤(鏈中的所有方法)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.

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