如何获得Line异常

时间:2016-07-31 14:18:28

标签: c# exception

问题非常明确。 它应该与

一起使用
StackTrace st = new StackTrace(exc, true);

//Get the first stack frame
StackFrame frame = st.GetFrame(0);

//Get the file name
//string fileName = frame.GetFileName();

//Get the line number from the stack frame
int line = frame.GetFileLineNumber();

问题是,如果我在调试模式下启动我的应用程序,它始终有效。 当我在发布模式下启动它时,似乎需要pdb文件来获取此信息。那么保留pdb文件有什么缺点(我认为只有在调试模式下才需要它们)。 Viceversa是获取异常行信息的唯一方法吗?

2 个答案:

答案 0 :(得分:2)

  

那么保留pdb文件有什么缺点(我认为只有在调试模式下才需要它们)

大多数事实是它可以实现更大的部署。显然是doesn't affect performance

  

Viceversa这是获取异常行信息的唯一方法吗?

是的,只有pdb包含行信息。但正如评论中所提到的,在发布模式下,行号可能不完全准确。

答案 1 :(得分:1)

除了使用pdb文件的技巧外,如果需要保留行号(不是100%),还需要为项目禁用“优化代码”选项。但这仍然是不推荐,因为它可能会使您的程序变慢。

您可以在项目属性的构建选项中找到它。

优化代码会重新排列代码,删除,移动和添加行以优化它。