Answers:
我的解决方案
将pdb文件复制到与可执行文件相同的文件夹中。
现在,我可以在运行exe文件时查看行号。
这就是原因
http://msdn.microsoft.com/zh-CN/library/ee416588%28v=vs.85%29.aspx
过去,我遇到了一些问题,在这些问题中,我需要使用发布版本来部署PDB文件,以便跟踪错误。就像您说的那样,原因是异常发生在一种非常大的方法中,我无法准确查明发生的位置。
这可能表明该方法需要重构为更小,更精细的方法。并非所有解决方案都适合所有人,但从短期(从重构的角度来看,我经常发现该错误)和长期来看,这种方法对我很有用。
只是一个想法。
每次都有效。您只需要为堆栈跟踪消息添加字符串。真容易!另外,在vb.net中,您确实需要执行“显示所有文件”并包含pdb。
'Err is the exception passed to this function
Dim lineGrab As String = err.StackTrace.Substring(err.StackTrace.Length - 5)
Dim i As Integer = 0
While i < lineGrab.Length
If (IsNumeric(lineGrab(i))) Then
lineNo.Append(lineGrab(i))
End If
i += 1
End While
'LineNo holds the number as a string
C#版本:
string lineGrab = error.StackTrace.Substring(error.StackTrace.Length - 5);
int i = 0;
int value;
while (i < lineGrab.Length)
{
if (int.TryParse(lineGrab[i].ToString(), out value))
{
strLineNo.Append(lineGrab[i]);
}
i++;
}