2010-02-03 203 views
28

我使用C#來自Java背景 - 我有一個例外,但它不告訴我行號 - 只是方法名稱。C#異常不給行號

是否正常?是調試/發佈構建?

+0

是的,沒有調試信息CLR不能報告行號。在調試會話中查找方法並查看問題仍然不應太困難。 – Lazarus 2010-02-03 12:56:40

+0

愚蠢:http://stackoverflow.com/questions/1328836 – raven 2010-02-12 15:10:41

+0

可能重複的[在異常處理中顯示行號](http://stackoverflow.com/questions/688336/show-line-number-in-exception-handling ) – bmargulies 2012-10-25 14:52:46

回答

36

只要將pdb文件保留在應用程序目錄中,在Debug中編譯時應該可以使用行號。

根據Justin's answer,如果啓用PDB創建,這也可以在Release中使用。

如果你有興趣,更多信息可以在PDB Files找到(MSDN)

13

Exception類的StackTrace屬性包含行號,至少如果調試信息(PDB文件)可用:

using System; 
class Program { 
    public static void Main() { 
     try { 
      throw new Exception("test"); 
     } catch (Exception e) { 
      Console.WriteLine(e.StackTrace); 
     } 
    } 
} 

將給予PDB文件輸出如下:

at Program.Main() in X:\code\test\test\Program.cs:line 6 

,這不:

at Program.Main() 
4

確保您的應用程序的PDB文件部署與應用。 PDB文件是CLR用來確定源代碼行號的文件。

15

這是下降到調試符號不被使用 - 當你建立你的項目,確保你在調試設置「滿」設置(Project properties - >Build - >Advanced - >Debug info),並確保該當您運行應用程序時,所產生的pdb文件會在同一個目錄中同時出現。