2017-01-04 11 views
0

commandコマンドを使用してgdbでブレークポイントのルーチンをスクリプト化する方法が本当に好きです。しばしば、私はメッセージを印刷するだけのためにprintステートメントを追加しますが、私はソースファイルを変更せずにこのすべての動作が好きです。コードを変更せずにVisual Studioでデバッガのメッセージを表示

Visual Studioを使用しなければならず、デバッグプリントステートメントを挿入する方法がOutputDebugStringを使用していることがわかりました。しかし、私はデバッグするために私のソースコードを修正する必要があるのが好きではありません。 gdbのように、つまりソースを変更せずに、VSにデバッグメッセージを出力する方法はありますか?

さらに、VCコンパイラはOutputDebugStringコールをどのように処理しますか?それは実際にプログラムのアセンブリでその行をコンパイルしますか?私が行った唯一の変更がOutputDebugStringへの呼び出しを追加する場合は、私のコードをコンパイルする必要がありますか?

+0

'#ifdef _DEBUG OutputDebugString()#endif'のようなデバッグビルドにマクロを使うことができるので、リリースモードでコンパイルしているときに、この関数は実際にはコンパイルされず、プログラムから除外されます。そして、はい、この関数はアセンブリ(生成されたマシン)コードを生成します。最後に私が完全に理解していない質問は、コードを変更する必要がある場合は、コードをコンパイルする必要があると思います。 –

+0

@ViniyoShoutaありがとう、それはすべてに答えます。 –

+0

@ViniyoShoutaこれに悩まされるのは無理でしょうか?私はMSがなぜこのようにしたのだろうと思っています.gdbの方がはるかに優れているようです。 –

答えて

2

Visual Studio トレースポイントを探しています。

私はそれらを使用していませんが、well documentedと思われます。

トレースポイントはメッセージを印刷でき、ソースコードの変更は必要ありません。

関連する問題