如何在后台启动“gdbserver”?

Hi-*_*gel 2 shell debugging terminal background-process

当我在设备(如gdbserver :2345 myapp上运行 gdbserver 时,gdbserver 完全阻止终端。添加 & 符号&或按下都不会^z使其在后台运行。我还检查过:它在 Kubuntu 上也可以重现。

我确实需要使用 shell 命令,而且由于我不知道如何通过 gdbserver 执行这些命令,所以在它运行后我感觉自己瘫痪了。

小智 6

这似乎对OP有用。

gdbserver :2345 ls > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

我认为这样做的原因是因为当程序被守护时,它会关闭所有 STDIO 0,1 和 2。下一个要打开的 IO 将是 0。如果程序尝试将 0,1 或 2 与 printf 或 scanf 之类的东西一起使用它将作用于错误的 IO 或关闭的 IO。例如,如果它是守护进程化的,则套接字在 0 上打开(STDIN 是),如果调用 printf,它将写入非打开的 FD,这将导致程序崩溃。