【发布时间】:2014-10-16 07:45:38
【问题描述】:
当我打电话时,例如图像列表,我有很多。目前,我只是将其复制出来然后使用它。但是真的没有别的办法了吗?我希望能够做类似image list | grep ...
【问题讨论】:
当我打电话时,例如图像列表,我有很多。目前,我只是将其复制出来然后使用它。但是真的没有别的办法了吗?我希望能够做类似image list | grep ...
【问题讨论】:
首先,“图像列表”将模块名称作为参数,所以如果您知道要查找的模块,您可以这样做:
(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 脚本介绍网页:
【讨论】:
我整理了一个小脚本,允许通过任何 shell 实用程序管道输出 LLDB 命令:
https://github.com/ihnorton/lldb.sh
安装该脚本后,任何(希望如此!)lldb 命令都可以以sh 为前缀,然后是| 和一个shell 命令。例如,下面的管道输出 image list 到 wc -c 并返回字符数:
(lldb) sh image list | wc -c
3898
或者
(lldb) sh image list | grep <your library>
...
它也适用于像 less 这样的寻呼机:
(lldb) sh image list | less
...
【讨论】: