有一种方式来显示的在线堆跟踪。净大会建立/部署在释放模式?

更新:

我的程序被分为三类图书馆的项目和一个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++;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top