【发布时间】:2012-12-12 10:31:35
【问题描述】:
我有一个 VB.NET 2010 Winforms 应用程序,我想在堆栈跟踪中包含行号。我已阅读以下问题和答案:
how to print out line number during application run in VB.net
其中提到“您始终需要在代码中包含 PDB 文件,其中包含在这种情况下使用的调试信息”。在高级编译器设置下,我尝试将“生成调试信息”作为“仅 pdb”和“完整”用于我的发布版本,并确认在与我的 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 与可执行文件位于同一路径中。
【问题讨论】:
标签: winforms stack-trace vb.net-2010