LinuxでGDBを使用してMPIC++のdegugを実行しています。
次のコマンドを使用できません。
xterm -e gdb mpirun -np 1 ./myApplication
実行可能プログラムのウィンドウを開くには./myApplication
:xtermターミナルが表示され、すぐに消えます。
なぜこれが起こるのですか?
次のコマンドでxtermを開くことができます。
xterm or xterm -e gdb.
どんな助けでも本当にありがたいです。
@chatanはほとんどそれを正しくしました。
gdb
プログラムに引数を渡しながらそのプログラムを呼び出したい場合は、gdb の--args
オプションを使用する必要があります。例 (私は を持っていないのでmpirun
、使用します/bin/sleep
):
$ gdb --args /bin/echo hello
[...]
Reading symbols from /bin/echo...(no debugging symbols found)...done.
(gdb) run
Starting program: /bin/echo hello
hello
Program exited normally.
gdb
プログラムの実行を自動的に開始しません。入力を待ちます。
--args
オプションがなければ、への引数としてではなく、オプションとしてgdb
受け取ります。にはオプションがないため、エラー メッセージで終了します。-np
gdb
mpirun
gdb
-np
$ gdb mpirun -np 1 ./myApplication
gdb: unrecognized option '-np'
Use `gdb --help' for a complete list of options.
を実行するxterm -e gdb mpirun -np 1 ./myApplication
と、が実行され、xterm
が呼び出されgdb
、gdb
エラー メッセージが表示されて終了し、メッセージが表示xterm
される前に終了します。
したがって、これでうまくいくはずです:
xterm -e gdb --args mpirun -np 1 ./myApplication
もちろん、呼び出すにはrun
コマンドを入力する必要があります。(gdb を使用している場合は、おそらく既にそれを知っているでしょう。)gdb
mpirun
今後の参考のために、 でプログラムを実行する際に問題が発生した場合はxterm -e
、単独で実行してみてください。
とにかく、コマンドは期待どおりに機能しません。gdb は 'mpirun' の後の引数を無視します。そして、引数のない裸の mpirun コマンドは、すぐに終了します (ターミナルで手動で mpirun を実行してみてください)。xterm はその 1 つのコマンドを実行するために開始されたため、そのプロセスが終了すると消えます。
あなたがする必要があるのは、xterm を開くことです。次に、「gdb mpirun」コマンドを実行します。
gdb コマンド プロンプトが表示されるはずです。このプロンプトで、次のコマンドを発行する必要があります。
(gdb) run -np 1 ./myApplication
これで、アプリケーションが gdb 内で実行されているはずです。