当我使用预处理指令时,例如
1 #if(DEBUG)
2 // 1
3 // 2
4 #else
5 // 1
6 // 2
7 #endif
8
9 logger.Debug("Log exception, etc.");
这会导致运行时日志中的行号(例如堆栈跟踪)不正确 - 在上面的示例中,第9行将变为第4行,因为其余部分将由预处理器解析。
这使得日志分析非常困难。
有没有一种方法可以解决这个问题而不需要创建带有ConditionalAttribute
的方法?
我知道Debugger.IsAttached
(现在正在使用此解决方案),但我更喜欢根据构建模式(调试/发布)而不是调试器是否已连接来运行代码。
logger.Debug("Exception:" + exception)
时,异常跟踪中的行号会正确显示,与原始源文件匹配。我怀疑其他地方出了问题。请给我们一个真正的例子,而不是像这样实际上不会引发异常的例子。 - Ross Patterson