2011-10-20 16 views

回答

6

你可以這樣做:

var line = new StackFrame(0, true).GetFileLineNumber(); 

注意有幾個注意事項這一點。

  1. 您將需要確保源文件和PDB可達。
  2. 這會得到你所在的方法的當前行,而不是你確切的位置。
  3. Jit可能執行導致錯誤信息的優化,例如內聯方法。

對於VB.NET這是同樣的事情:

Dim line As Integer = New StackFrame(0, True).GetFileLineNumber() 

至於傳統的ASP老話 - 我不相信這是可能的。

+0

你有代碼可以在asp中做到這一點嗎? – RetroCoder

+0

@RetroCoder我不相信這是可能的。 – vcsjones

1

雖然vcsjones的答案可能正是你要找的,爲了調試/故障診斷VB.NET的目的,你可能想看看Err對象的Erl屬性。它返回一個整數,表示最後一次執行的語句的行號 - 按行號表示一個數字標籤,而不是源文件的物理行號。

在關鍵點上用行號來編寫代碼有助於排除意外異常,並且不需要源文件和PDB就可以使Erl正常工作。