私は2つの簡単なプログラムを書きました:
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest2", argv );
}
と
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest1", argv );
}
gcc -g を使用して、それらを適切な出力ファイルにコンパイルしました。gcc (Ubuntu/Linaro 4.4.4-14ubuntu5.1) 4.4.5 を使用して Ubuntu 10.10 を実行しています。
GNU gdb (GDB) 7.2-ubuntu を使用して最初のプログラムをデバッグしているときに、最初の execv ステートメントまでステップ実行できますが、その後は 2 つのファイルが実行され続けます。follow-exec-mode を new に設定しても、2 番目のプログラムにステップ インできません。catch exec を設定すると、gdb は execv への呼び出しごとに停止します (2 番目のプログラムのリンクされたソースがないと、gdb を終了できません!?) が、できません。 「新しい」(execがプロセスを置き換えるため)下位プログラムへの呼び出しをステップオーバーします。
では、これを行うにはどうすればよいでしょうか。新しいプロセスに足を踏み入れる方法があるはずですよね?私は何か間違ったことをしていますか?
乾杯