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

Redirect GDB输入重定向在Mac OS High Sierra 10.13.3上不起作用,redirect,input,gdb,macos-high-sierra,Redirect,Input,Gdb,Macos High Sierra,我在Mac OS High Sierra 10.13.3上使用GDB 8.0.1。基本上,做: (gdb) r < some_input_file.in 我找到的关于这个问题的最接近的线程是,但没有发布解决方案 有什么线索吗? 谢谢 您可能遇到了gdb和macOS SIP之间的交互(“系统完整性保护”) gdb通过将命令行传递给shell来实现run重定向;然后等待shell调用您的程序,然后开始“真正调试”。实际上,shell仍然由gdb使用ptrace控制——gdb使用它来观察最终的

我在Mac OS High Sierra 10.13.3上使用GDB 8.0.1。基本上,做:

(gdb) r < some_input_file.in
我找到的关于这个问题的最接近的线程是,但没有发布解决方案

有什么线索吗?
谢谢

您可能遇到了gdb和macOS SIP之间的交互(“系统完整性保护”)

gdb通过将命令行传递给shell来实现
run
重定向;然后等待shell调用您的程序,然后开始“真正调试”。实际上,shell仍然由gdb使用
ptrace
控制——gdb使用它来观察最终的exec,并确保您的流程也被跟踪

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

因此,为了让gdb继续工作,用户通常
在shell关闭时设置startup
。也许无论您使用的是什么gdb构建,默认情况下都会这样做(或者,像我一样,您把它放在
.gdbinit
中,然后忘记了它)。此设置允许运行,但代价是禁用重定向


您可以遵循一个解决方案。

此错误被标记为已修复,但据我所知,目前MacOS Catalina上的gdb无法使用gdb输入重定向。您必须确保使用正确版本的gdb。然而,我认为gdb在Catalina上根本不起作用-没有活动的macOS gdb维护程序,系统发生了一些变化,导致gdb停止工作。哦,我通过标准的
brew安装让gdb在Catalina上工作得很好
-只是重定向不起作用。为了使它能够工作,您需要对二进制文件进行编码签名,这有点麻烦。我基本上遵循了这些指示:但我必须同意,在catalina(以及一般的macos)下使用gdb可能比它的价值更麻烦。
(gdb) r