winforms – 在堆栈跟踪中获取VB.NET行号

前端之家收集整理的这篇文章主要介绍了winforms – 在堆栈跟踪中获取VB.NET行号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个VB.NET 2010 Winforms应用程序,我想在堆栈跟踪中包含行号.我已经阅读了以下问题和答案:

how to print out line number during application run in VB.net

其中提到“您总是需要将PDB文件与您的代码一起包含,其中包含在这种情况下使用的调试信息”.在高级编译器设置下,我已经尝试将“生成调试信息”为“pdb-only”和“full”作为我的发行版本,并确认在与EXE相同的目录中生成了一个新的PDB文件.但是,以下测试代码为每个堆栈帧生成零行数,并且不返回文件名:

Dim st As StackTrace = New StackTrace(ex)
    For Each sf As StackFrame In st.GetFrames
        MsgBox("Line " & sf.GetFileLineNumber() & sf.GetFileName)
    Next

然而,以下代码直接生成另外一个好看的堆栈跟踪,因此它似乎不是一般的异常处理程序的问题:

ExceptionDetails.Text = ex.GetType.ToString & "(0x" & hr.ToString("X8") & "): " & ex.Message & vbCrLf & ex.StackTrace

我似乎没有找到项目配置中的其他任何可能的设置,并想知道是否有人有其他可能导致此问题的想法.我发现在这里和其他地方搜索的所有解决方案似乎建议确保PDB与可执行文件处于相同的路径.

从您打电话的构造函数documentation

The StackTrace is created with the caller’s current thread,and does not contain file name,line number,or column information.

尝试使用:

Dim st As StackTrace = New StackTrace(ex,True)

而是使用this constructor.第二个构造函数参数描述为:

true to capture the file name,and column number; otherwise,false.

原文链接:https://www.f2er.com/vb/255088.html

猜你在找的VB相关文章