繁体   English   中英

防止特定线程上的断点 - LLDB

[英]Prevent breakpoint on specific thread - LLDB

我知道如何使用breakpoint modify <breakpoint-id> -T <thread-name>创建/修改断点以仅在特定线程上停止,但我可以反过来做,防止断点在特定线程上停止线?

我有一个日志线程,它使用我试图在其他线程上调试的相同功能,每次触发时都必须让它继续运行,这很烦人。

您可以使用 lldb Python API 和 Python 断点回调来执行此类操作。 回调返回一个“应该停止”值,即如果它返回 True,则在断点处停止,而 False 则继续。

例如:

(lldb) breakpoint command add -s python -o 'return frame.thread.name != "MyThread"'

是你想要的。 请注意,在此示例中,我没有提供断点 ID。 在 lldb 中,这意味着“在最后设置的断点上操作”。 但是,如果您想要添加命令的那个不是您设置的最后一个断点,您也可以提供断点 ID。 并且如果你想将它添加到多个断点,你可以指定一个断点ID列表。

这里有更多关于 API 和回调格式的信息:

https://lldb.llvm.org/python_api.html

https://lldb.llvm.org/use/python-reference.html#running-a-python-script-when-a-breakpoint-gets-hit

但是请注意,带有应该停止回调的断点将在每次遇到断点时强制停止。 lldb 自动继续非常快,因此对于许多应用程序来说这不是问题。 但是仅仅从停止到调试器并返回并不便宜,所以如果你的断点在一个工作循环中并且每秒被命中数十万次,这会减慢运行速度。 如果这最终成为一个问题并且您控制了您的源代码,那么像 Eljay 在评论中建议的技巧会非常方便。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM