スタックトレースに行番号を含めたいVB.NET2010Winformsアプリケーションがあります。次の質問と回答を読みました。
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が実行可能ファイルと同じパスにあることを確認することを示唆しているようです。