加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-17 00:30:55 所属栏目:大数据 来源:网络整理
导读:我有一个VB.NET 2010 Winforms应用程序,我想在堆栈跟踪中包含行号.我已经阅读了以下问题和答案: how to print out line number during application run in VB.net 其中提到“您总是需要将PDB文件与您的代码一起包含,其中包含在这种情况下使用的调试信息”.
我有一个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读