是否可以过滤LLDB输出?

问题描述 投票:5回答:2

[例如,当我打电话给图片列表时,如果有的话,我的号码很大。目前,我只是将其复制出来,然后使用它。但是真的没有别的办法吗?我希望能够执行类似image list | grep ...

的操作
xcode lldb
2个回答
5
投票

因此,首先,“图像列表”将模块名称作为参数,因此,如果您知道要查找的模块,则可以执行以下操作:

(lldb) image list Foundation
[  0] 18EDD673-A010-3E99-956E-DA594CE1FA80 0x00007fff8e357000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 

但是,lldb命令行本身不支持命令本身提供的管道或过滤操作。我们将这类任务转移给脚本解释器,从那时起,我们就可以利用脚本语言提供的整个生态系统。到目前为止,我们仅支持Python,因此您可以这样做:

(lldb) script
>>> for module in lldb.target.modules:
...     if module.file.basename == "Foundation":
...         print module.file
... 
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation

或您真正想做的一切... LLDB的Python帮助非常好,因此,要找出您在Python中可以使用的功能,请执行:

(lldb) script
>>> help (lldb.SBModule)
Help on class SBModule in module lldb:
etc...

还有一个关于Python脚本的介绍性网页,位于:

http://lldb.llvm.org/python-reference.html


0
投票

我整理了一个小脚本,该脚本允许通过任何shell实用程序传递LLDB命令的输出:

https://github.com/ihnorton/lldb.sh

安装该脚本后,任何(希望!)lldb命令都可以以sh开头,然后是|和一个shell命令。例如,以下通过image listwc -c的输出进行管道传输并返回字符数:

(lldb) sh image list | wc -c
    3898

(lldb) sh image list | grep <your library>
...

它也适用于少一些的传呼机:

(lldb) sh image list | less
...
© www.soinside.com 2019 - 2024. All rights reserved.