我在Mac OS High Sierra 10.13.3上使用GDB 8.0.1。基本上是这样:
(gdb) r < some_input_file.in
忽略输入文件。就像命令只是在运行
(gdb) r
我找到的与此问题最接近的线索是Input redirection from file gdb,但未发布解决方案。
有任何线索吗? 谢谢!
答案 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,您可以遵循。