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 重定向劣质标准输出的主要内容,如果未能解决你的问题,请参考以下文章