如何在LLDB中捕获C++异常并自动打印调用栈后继续执行
解决LLDB自动捕获C++异常并打印调用栈后继续执行的问题
你可以通过给C++异常断点绑定自动执行的命令来实现需求,具体操作有两种方式:
方式一:创建断点时直接绑定命令
直接在创建C++异常断点的同时指定触发时要执行的命令:
break set -E C++ -C "bt; continue"
这个命令会创建捕获所有C++异常的断点,每次触发时自动执行bt打印当前线程调用栈,随后执行continue让程序继续运行。
方式二:给已存在的断点添加命令
如果已经通过break set -E C++创建了断点,先通过以下命令查看断点ID:
break list
假设输出里该断点的ID是1,再给这个断点添加自动执行的命令:
break command add 1
执行后LLDB会进入命令编辑模式,依次输入:
bt continue
输入完成后按下Ctrl+D(macOS/Linux)或Ctrl+Z(Windows)结束编辑即可。
这样设置后,后续程序触发C++异常断点时,会自动完成调用栈打印并继续执行,无需手动干预。
内容的提问来源于stack exchange,提问作者osxUser
相关产品推荐
相关产品推荐

