@ 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
, чтобы вызвать mpirun
.(Если вы используете gdb, вы, вероятно, уже знаете это.)
Для дальнейшего использования, если у вас возникли проблемы с запуском программы под xterm -e
, попробуйте запустить ее самостоятельно.