0

我正在使用 GDB 在 Linux 上为 MPI C++ 进行调试。

我不能使用以下命令:

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则将其-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 ./myApplicationxterm它会调用gdbgdb并以错误消息xterm终止,并在您有机会看到该消息之前终止。

所以这应该可以解决问题:

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

当然,您仍然必须在其中键入run命令gdb来调用mpirun. (如果你使用的是 gdb,你可能已经知道了。)

为了将来参考,如果您在运行程序时遇到问题xterm -e,请尝试自行运行。

于 2011-10-17T01:03:40.307 回答
1

无论如何,您的命令不会按您期望的方式工作。gdb 将忽略“mpirun”之后的参数。没有任何参数的裸 mpirun 命令将立即退出(只需尝试在终端中手动运行 mpirun)。由于您的 xterm 开始执行该命令,因此该过程完成后它会消失。

您需要做的是,打开一个 xterm。然后运行“gdb mpirun”命令。

您应该最终进入 gdb 命令提示符。在此提示下,您需要发出以下命令:

(gdb) 运行 -np 1 ./myApplication

现在您的应用程序应该在 gdb 中运行。

于 2011-10-17T00:40:41.783 回答