5

次のようなプリプロセッサディレクティブを使用する場合

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ます(そして私は今このソリューションを使用しています)が、デバッガーが接続されているかどうかではなく、ビルドモード(デバッグ/リリース)に基づいてコードを実行したいと思います。

4

1 に答える 1

2

完全に別のプロジェクトで再度チェックしましたが、Ross Pattersonが示唆しているように、例外トレースは正しいです。

残念ながら、私はすでにDebugger.IsAttachedを使用して(大規模な)プロジェクトをリファクタリングし、問題が解決したため、プリプロセッサディレクティブが問題であると(根拠のない結果として)疑っていました。たぶん、.pdbはバイナリと同期していませんでした。

現在、問題を再現できないため、解決したと思います。このシナリオがサポートされていることを知っておくとよいでしょう。ロス・パターソンに感謝します!

于 2011-11-27T18:43:56.570 に答える