プログラムをデバッグする必要があります。問題は、このプログラムがいくつかのパラメーターを受け取ることです。パラメータを取るプログラムをデバッグするにはどうすればよいですか?? 実行時に argc および argv パラメータを何らかの方法で変更できますか??
3 に答える
最善の方法は、実行時に引数を変更するのではなく、必要な引数を持つインスタンスをデバッグすることです。
Windows の場合、次のように Visual Studio でこれを行うことができます。
- ソリューション エクスプローラーでプロジェクトを右クリックします。
- [構成プロパティ] -> [デバッグ] -> [コマンド引数] で必要な引数を設定します。
- F5 を押してプログラムを開始します (停止したい場所にブレークポイントを設定した後)。
または、コマンド ラインから通常どおりプログラムを起動し、その後デバッガをアタッチします。
コマンド ラインからデバッガーを呼び出す場合は、コマンド ライン引数を追加するだけで、デバッガーがそれらをプログラムに渡します。
IDE を使用している場合は、プログラムに渡される引数を設定する方法が必要です (たとえば、Visual Studio では、「デバッグ/コマンド引数」の下のプロジェクト プロパティにあります)。
ただし、デバッグ セッション中にさまざまなコマンド ライン引数を使用してデバッグしたい場合、プロジェクト プロパティを継続的に編集しなければならないのは面倒です。そのため、/に直接作用するのではなく、パラメーターを受け取る関数でargc
/を解析するようにし、ハード コーディングされたコマンド ライン文字列を渡すデバッグ コードで条件付きでコンパイルすることがよくあります ( IDE のプロジェクト プロパティを編集するのではなく、ソース ファイルの文字列を変更する必要があります) または、コマンド ライン引数のデバッグ コード プロンプトが表示されます。argv
argc
argv
argv
文字列をスタイルの配列に解析する便利な小さなルーチンがあり、それを通常argc
/を解析するルーチンに渡すことができargv
ます。
したがって、次のようになります。
int main( int argc, char** argv)
{
if (debugging) {
char** dbg_argv;
int dbg_argc = argcargv( &dbg_argv, "dummyarg0 my debugging command --line");
parse_options( dbg_argc, dbg_argv);
}
else {
parse_options( argc, argv);
}
// etc...
}
きれいではありませんが、プロジェクトのプロパティを何度もいじるよりは便利だと思います。
GDB を使用している場合:
gdb ./a.exe
> break main
> run arg1 arg2 arg3 etc..