You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让重定向标准输入输出错误的LLDB持续运行?

让后台LLDB通过命名管道持续运行的解决方案

我之前也碰到过一模一样的问题——用命名管道给后台LLDB发命令时,它总是执行完第一条就直接退出。核心原因其实很简单:LLDB读取完管道里的输入后,会判定stdin已经关闭,所以直接终止进程了。要解决这个问题,关键是得让LLDB的输入流一直保持打开,不让它觉得“没有更多命令要执行了”。

这里有个最实用的解决办法,用cat命令持续监听命名管道,把管道内容源源不断喂给LLDB,而不是让LLDB直接读取管道:

#!/usr/bin/env bash
pipe=/tmp/mypipe
mkfifo $pipe
# 用cat持续读取管道内容,维持LLDB的stdin处于打开状态
cat $pipe | lldb >out.txt 2>err.txt &

为什么这招管用?因为cat会一直保持对管道的读取状态,哪怕管道暂时没有内容,它也会阻塞等待新输入,不会轻易关闭流。这样LLDB的stdin就会一直处于活跃状态,随时能接收你后续通过管道发送的命令。

另外还要注意一个细节:发送命令时要确保末尾带换行符,LLDB是按行解析命令的。比如发送attach命令应该这么写:

echo -e "attach -n AppName\n" > /tmp/mypipe

之后你就可以继续发送其他操作命令,比如设置断点:

echo -e "break set -n target_function\n" > /tmp/mypipe

等所有自动化步骤完成后,发送quit命令就能正常关闭LLDB了:

echo -e "quit\n" > /tmp/mypipe

这样修改后,LLDB就会一直保持运行状态,直到你主动让它退出,完全能满足你在脚本中交替控制应用和调试器的需求。

内容的提问来源于stack exchange,提问作者Yevhen Danchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:51