0

我有 ac# windows 应用程序(在插件架构中开发),我想从我的应用程序中记录所有未处理的异常。我能够捕获所有异常。

我想从 Exception 中读取文件名和行号。(在.Net 2.0中)

我用了

 if (exception.InnerException != null)
 {
     exception = exception.InnerException;
 }

StackTrace trace = new StackTrace(exception, true);
string fileName = trace.GetFrame(0).GetFileName();
int lineNo = trace.GetFrame(0).GetFileLineNumber();

它在我的应用程序中的异常情况下工作正常,如果参考 dll 中有任何异常我没有得到文件名和行号

4

2 回答 2

4

仅当相关 DLL 的“.pdb”文件可用时,此信息才可用。

因此,您应该确保相应的“.pdb”文件与它们相应的 DLL 并列。

您还需要启用 PDB 文件中的完整数据。调试版本默认执行此操作,但发布版本不包含行号信息。

您可以通过转到项目的构建页面来配置发布构建,确保您已选择“发布”配置,然后单击页面底部的“高级”按钮。在“高级构建设置”对话框中,您需要为“调试信息”设置选择“完整”。

于 2014-01-08T09:15:08.353 回答
0

第一帧并不总是正确的答案。就我而言,这是最后一个。一般来说,我认为它是第一个有文件的。

于 2017-11-28T19:14:26.460 回答