lldb 仅列出命中数 > 0 的断点

lldb list only those breakpoints with hit count > 0

我在一个特定的库上设置了 100 个断点。 br list 显示了所有断点,滚动所有断点以找出哪些断点具有命中计数是很痛苦的。有没有办法只列出那些命中数 > 0 的断点?

break list 没有任何可用于过滤列表的谓词,但您可以很容易地制作自己的过滤器。例如:

(lldb) script
Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.
>>> for idx in range(0, lldb.target.num_breakpoints):
...     bkpt = lldb.target.GetBreakpointAtIndex(idx)
...     if bkpt.GetHitCount() > 0: 
...         print(bkpt)
... 

会告诉你你想要什么。如果你经常使用它,你可以将它捆绑到一个命令中,如下所示:

https://lldb.llvm.org/use/python-reference.html#create-a-new-lldb-command-using-a-python-function

请注意,如果您确实将其转换为命令,请记住使用您传递的 SBExecutionContext 中的目标,lldb.target 在基于 Python 的命令中不可用。