GDB输入重定向在Mac OS High Sierra 10.13.3上不起作用

时间:2018-07-24 07:32:16

标签: redirect input gdb macos-high-sierra

我在Mac OS High Sierra 10.13.3上使用GDB 8.0.1。基本上是这样:

(gdb) r < some_input_file.in

忽略输入文件。就像命令只是在运行

(gdb) r

我找到的与此问题最接近的线索是Input redirection from file gdb,但未发布解决方案。

有任何线索吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可能正在gdb与macOS SIP(​​“系统完整性保护”)之间进行交互。

gdb通过将命令行传递到shell来实现run重定向;然后在开始“真正调试”之前,它会等待外壳程序调用您的程序。实际上,shell仍由gdb使用ptrace控制-gdb使用它来观察最终的exec并确保还跟踪了您的进程。

但是,像大多数shell一样,SIP阻止跟踪某些程序,尤其是/usr/bin中的程序。这会导致run完全停止工作,因为无法启动外壳。

因此,为了使gdb继续工作,用户通常set startup-with-shell off。也许您正在使用的任何gdb构建都默认执行此操作(或者像我一样,您将其放入.gdbinit中并忘记了)。此设置可以使run正常工作-但要以禁用重定向为代价。

有一个gdb bug,您可以遵循。