Окно xterm нельзя удерживать в Linux, оно появляется, а затем исчезает очень быстро - PullRequest
0 голосов
/ 16 октября 2011

Я делаю разгрузку для MPI C ++ в Linux с помощью GDB.

Я не могу использовать следующую команду:

xterm -e gdb mpirun -np 1 ./myApplication

чтобы открыть окно для исполняемой программы ./myApplication: терминал xterm появляется, а затем сразу исчезает.

Почему это происходит?

Я могу открыть xterm с помощью:

xterm or xterm -e gdb. 

Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

@ 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, попробуйте запустить ее самостоятельно.

1 голос
/ 17 октября 2011

Ваша команда не будет работать так, как вы ожидаете.GDB будет игнорировать аргументы после 'mpirun'.И голая команда mpirun без каких-либо аргументов собирается немедленно выйти (просто попробуйте запустить mpirun вручную в терминале).Поскольку ваш xterm был запущен для выполнения этой одной команды, он исчезает после завершения этого процесса.

Что вам нужно сделать, это открыть xterm.Затем запустите команду "gdb mpirun".

Вы должны оказаться в командной строке GDB.В этом приглашении вам нужно ввести следующую команду:

(gdb) run -np 1 ./myApplication

Теперь ваше приложение должно работать внутри gdb.

...