LLDB 重定向劣质标准输出

Posted

技术标签:

【中文标题】LLDB 重定向劣质标准输出【英文标题】:LLDB redirect inferior stdout 【发布时间】:2015-11-02 21:18:21 【问题描述】:

我正在使用带有最新 OS X 工具链的 LLDB(lldb --version 表示 lldb-340.4.110)。

我尝试调试在标准输出中产生大量输出的可执行文件。 以前可以通过重定向来抑制输出,例如到/dev/null

但在最新的 OS X 工具链更新后,它开始产生以下错误:

(lldb) run >/dev/null
error: invalid JSON

LLDB 在该领域有什么变化吗?就像添加一些语法来指定 stdin/stdout/stderr 重定向一样。在 LLDB 文档或邮件列表中找不到任何线索。我也可以假设这是 Apple 特有的 LLDB 错误。

附言

我知道我的问题可以通过运行来临时解决: sudo lldb -w -n <executable> 在单独的终端窗口中,它将告诉 LLDB 等待具有给定名称的新进程,然后附加到该进程。在这种情况下,我可以在另一个终端窗口中运行我的可执行文件,并将stdin 重定向到/dev/null

但我对这种工作流程感到非常不舒服,因为 stdout 重定向只能在我的 Linux 机器上的 GDB 中工作。打破习惯总是不舒服。

【问题讨论】:

【参考方案1】:
(lldb) process launch -o /dev/null -- <OTHER ARGUMENTS>

会做你想做的事。您也可以创建别名来执行此操作:

(lldb) command alias silent-run process launch -o /dev/null --

然后:

(lldb) silent-run a b c 

将运行您的程序,将标准输出重定向到 /dev/null,并将 a、b 和 c 作为参数传递。

【讨论】:

-o 的长格式似乎是--stdout。还有--stderr--stdin 选项。

以上是关于LLDB 重定向劣质标准输出的主要内容,如果未能解决你的问题,请参考以下文章

怎样去掉提示:nohup:重定向标准错误到标准输出

LINUX 标准错误输出重定向

在win32中重定向标准输出不会重定向标准输出

Linux标准输入输出与重定向详解果断收藏

如何将 A 的标准输出重定向到 B 的标准输入,将 B 的标准输出重定向到 A 的标准输入?

Shell 环境中的输入输出重定向