C++ 如何让LLDB成功退出,失败等待?

C++ 如何让LLDB成功退出,失败等待?,c++,macos,lldb,C++,Macos,Lldb,这是以下的铿锵版本: 在大量可能的输入上多次以编程方式运行应用程序时,我偶尔会遇到分段错误 我希望每个测试调用都在lldb下运行,这样我就可以得到一个回溯,以便进一步调试。如果调用在没有崩溃的情况下退出,我希望lldb自动退出,以便测试工具进入下一个迭代。这样,我就可以在午餐时间把整个事情都安排好,只有在发生故障时,套房才会被打断 在所有情况下,lldb自动退出,但如果程序崩溃,则首先打印回溯,可获得额外积分 我目前至少能够自动执行最初的运行命令: lldb -o run -f $CM

这是以下的铿锵版本:


在大量可能的输入上多次以编程方式运行应用程序时,我偶尔会遇到分段错误

我希望每个测试调用都在
lldb
下运行,这样我就可以得到一个回溯,以便进一步调试。如果调用在没有崩溃的情况下退出,我希望
lldb
自动退出,以便测试工具进入下一个迭代。这样,我就可以在午餐时间把整个事情都安排好,只有在发生故障时,套房才会被打断

在所有情况下,
lldb
自动退出,但如果程序崩溃,则首先打印回溯,可获得额外积分

我目前至少能够自动执行最初的
运行
命令:

lldb -o run -f $CMD -- $ARGS

我很难找到联机命令引用,但看起来
-batch
命令行选项将为您提供基本的“成功时退出/失败时提示”行为

对于故障时的回溯和自动退出,我认为您需要
--source on crash
选项

-K <filename>  
--source-on-crash <filename>  
    When in batch mode, tells the debugger to source this file of lldb
    commands if the target crashes.
然后调用为

lldb --batch -K lldb.batch -o run -f $CMD -- $ARGS

为寻求注意力而顽皮添加C++标签。应用程序是C++;不错!到目前为止,我看到的唯一缺点是退出代码似乎没有反映目标的退出代码。所以我的测试装置不太清楚发生了什么。在批处理文件中放入“quit 1”可以部分地解决问题。我想理想的解决方案应该是,而不是
-batch
,一个
--source on优雅退出
,我可以把
quit$exitCode
放进一个批处理文件或者其他什么东西。也许我应该使用Python绑定作为启动程序。我担心,如果不借助Python,我真的无法实现更多。另外,您能否澄清一下您所说的
“将'quit 1'放入批处理文件中会使我部分地到达那里。”
?使用
quit 1
对我来说不会影响
lldb
本身的退出代码(
lldb
version 6.0.1)--事实上,我在
quit
之后键入的任何内容都会被完全忽略。设置lldb退出值的功能是最近增加的。它将在7开源版本中发布。
lldb --batch -K lldb.batch -o run -f $CMD -- $ARGS