显示的行数量在栈跟踪。净大会在释放模式
-
06-07-2019 - |
题
有一种方式来显示的在线堆跟踪。净大会建立/部署在释放模式?
更新:
我的程序被分为三类图书馆的项目和一个ASP.NET "网站的"项目。错我试图追查是在一个三级的图书馆项目。我只部署pdb文件的类库项目,该项目产生的"对象,参考不设定对象的一个实例"的错误。
线数字仍然没有出现在该堆踪。我需要部署pdb文件的所有项目获得的线数字堆栈?
工作方案
部署pdb文件针对每个应用程序固定线路数量的问题。
解决方案
- 进入的属性窗口项目在那里你想看到堆跟踪线数字。
- 点击,在建立"垂直的标签".
- 选择"释放"的配置。
检查调试恒量参数。 - 取消选择"优化码"参数,以避免偶尔跟踪问题与内联的代码(这一步骤是不必要的).
- 按先进的...按钮,选择输出>调试信息>pdb。
- 部署而产生的。pdb文件与会。
实施与评论如下:
- 另一件事情要检查是在"一揽子/发布网"部分中,"排除产生"调试"符号"checkbox是还未
其他提示
在VS2012中,您需要取消选中“排除生成的调试符号”。在属性的Package / Publish Web部分中。
我的解决方案
将pdb文件复制到可执行文件所在的文件夹中。
现在我可以在运行exe文件时查看行号。
这是理由
http://msdn.microsoft。 COM / EN-US /库/ ee416588%28V = vs.85%29.aspx
我过去遇到过一些问题,我觉得需要使用发布版本部署PDB文件以便追踪错误。原因是,就像你说的那样,异常发生在一个非常大的方法中,我无法准确地确定它发生的位置。
这可能表明该方法需要重构为更小,更精细的方法。不是一个适合所有答案,但这种方法在短期内(我经常在重构过程中发现错误)和长期运作方面都很有用。
只是一个想法。
在构建/部署包中包含调试符号。
在VS 2008 Express中,我在Project Properties - >下找到了它。编译 - >高级编译选项。
这工作的每一个时间。你只需要substring堆跟踪信息。真容易!此外,中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++;
}
不隶属于 StackOverflow