0

LinuxでGDBを使用してMPIC++のdegugを実行しています。

次のコマンドを使用できません。

xterm -e gdb mpirun -np 1 ./myApplication

実行可能プログラムのウィンドウを開くには./myApplication:xtermターミナルが表示され、すぐに消えます。

なぜこれが起こるのですか?

次のコマンドでxtermを開くことができます。

xterm or xterm -e gdb. 

どんな助けでも本当にありがたいです。

4

2 に答える 2

2

@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受け取ります。にはオプションがないため、エラー メッセージで終了します。-npgdbmpirungdb-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が呼び出されgdbgdbエラー メッセージが表示されて終了し、メッセージが表示xtermされる前に終了します。

したがって、これでうまくいくはずです:

xterm -e gdb --args mpirun -np 1 ./myApplication

もちろん、呼び出すにはrunコマンドを入力する必要があります。(gdb を使用している場合は、おそらく既にそれを知っているでしょう。)gdbmpirun

今後の参考のために、 でプログラムを実行する際に問題が発生した場合はxterm -e、単独で実行してみてください。

于 2011-10-17T01:03:40.307 に答える
1

とにかく、コマンドは期待どおりに機能しません。gdb は 'mpirun' の後の引数を無視します。そして、引数のない裸の mpirun コマンドは、すぐに終了します (ターミナルで手動で mpirun を実行してみてください)。xterm はその 1 つのコマンドを実行するために開始されたため、そのプロセスが終了すると消えます。

あなたがする必要があるのは、xterm を開くことです。次に、「gdb mpirun」コマンドを実行します。

gdb コマンド プロンプトが表示されるはずです。このプロンプトで、次のコマンドを発行する必要があります。

(gdb) run -np 1 ./myApplication

これで、アプリケーションが gdb 内で実行されているはずです。

于 2011-10-17T00:40:41.783 に答える