CLion SIGABRT 我使用的是 CLion 2024.1.6,lldb-1600.0.39.3。在调试模式下,程序触发了SIGABRT。预计应该在此处触发断点。我想知道问题是什么。
我尝试设置
handle SIGABRT using lldb -s true -n true -p true
,但还是不行
需要明确的是,SIGABRT 不是断点,它是程序向自身传递的信号,告诉它中止 - 生成是因为失败的断言最终调用了 pthread_kill。
断言宏可以被禁用,例如:
许多项目构建时断言在发布模式下“关闭” - 所以它们基本上是 noop 的,但在调试模式下打开。 这个想法是,当您正在调试(或在调试模式下运行应用程序的测试套件)时,您希望立即捕获任何违反断言所表达的内部要求的行为,因此您需要一个断言来停止该过程。
SIGABRT 也是一个“不可屏蔽”信号,因此尽管您可以告诉 lldb 在信号传递时是否停止,但它会终止您的应用程序。
您所描述的是断言宏和调试器的正确行为。 如果您不希望断言生成 SIGABRT,则必须按照上面答案中的说明将其关闭。 否则它将生成此信号,旨在终止程序的执行。