如何在LLDB中设置断点避免在特定线程上命中停止
断点排除指定线程命中的配置方法
LLDB 没有提供和 -T(指定仅命中线程)对应的原生反向参数来直接屏蔽某线程的断点触发,但可以通过两种方案实现同等效果,解决日志线程频繁打断调试的问题:
- 方案1:配置断点命中条件
直接给目标断点增加判断逻辑,仅当命中线程不是要排除的日志线程时,断点才会暂停程序。命令格式:
如果要排除的日志线程没有设置名称,可以先等它第一次命中断点时执行breakpoint modify <目标断点ID> --condition 'thread.GetName() != "<日志线程的完整名称>"'thread list拿到它的数字线程ID,把条件替换为thread.GetIndexID() != <日志线程ID>即可。 - 方案2:绑定断点自动执行命令
给断点添加命中时自动运行的脚本:如果识别到当前是日志线程命中,就自动恢复程序运行,不需要手动操作。配置步骤:- 执行命令进入断点命令编辑模式:
breakpoint command add <目标断点ID> - 在交互输入界面输入以下内容,把
<日志线程的完整名称>替换成你实际的日志线程名:script if lldb.thread.GetName() == "<日志线程的完整名称>": lldb.process.Continue() DONE
DONE回车后配置就会生效,后续日志线程触发这个断点时会自动跳过,不会暂停。 - 执行命令进入断点命令编辑模式:
小提示:如果不知道日志线程的准确名称,等它第一次命中断点时执行
thread info就能看到当前线程的名称、ID等信息,直接复制使用即可。
内容的提问来源于stack exchange,提问作者davdsb
相关产品推荐
相关产品推荐

