我正在用GDB调试Linux上的mpic++。
我不能使用以下命令:
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
当然,您仍然需要在gdb
中键入run
命令来调用mpirun
。(如果您正在使用gdb,您可能已经知道了。)
为将来参考,如果您在xterm -e
下运行程序有问题,请尝试单独运行它。
无论如何,您的命令都不会按照您期望的方式工作。GDB将忽略'mpirun'之后的参数。没有任何参数的裸mpirun命令将立即退出(只需尝试在终端中手动运行mpirun)。由于您的xterm是为执行该命令而启动的,因此在该进程完成后它就会消失。
你需要做的是,打开一个xterm。执行"gdb mpirun"命令。
您应该在gdb命令提示符中结束。在这个提示符下,您需要发出以下命令:
1 ./myApplication