12

Boost は優れたライブラリ セットであり、生産性を大幅に向上させます。しかし、それを使用するコードのデバッグは完全な悪夢です。確かに、2 万個のヘッダー ファイルをステップ実行することは貴重な知的作業になる可能性がありますが、それを何度も繰り返す必要がある場合はどうすればよいでしょうか?

ブースト部分をスキップして、デバッガーをコードに直接移動させる開発者向けの方法はありますか?

Visual Studio には、.NET フレームワーク用のDebuggerStepThroughAttributeがあります。ネイティブ C++ に似たものはありますか?

4

2 に答える 2

11

プラットフォーム/コンパイラに依存しない方法はありませんが、特定の関数やクラスに「ステップイン」しないようにデバッガに指示できると聞いています。レジストリ キーを調べて[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver]、ルールが適用される順序で数値として名前が付けられた文字列値を作成する必要があります (私もそれについて少し混乱していますが、ルールは単純に順序付けられていると思います (逆になる可能性があります))。それらが適用されるべき方法)、「boost::.*=NoStepInto」のようなものに設定します。例えば:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\NativeDE\StepOver]
"10"="boost\:\:.*=NoStepInto"

ここでもう少し読むことができます。

于 2008-11-18T07:27:39.030 に答える
10

ここで説明する手法を使用して、ブースト名前空間を完全にスキップできます。次のようなものを使用してください:

boost\:\:.*=NoStepInto

... 関連するレジストリ エントリで。

ただし、コードがブースト内から呼び出された場合 (たとえば、 aboost::functionなどを介して)、コードもスキップされます! 誰かがその問題の良い解決策を思い付くことができれば、私は興味があります...

于 2008-11-18T07:15:48.850 に答える