image add
会将新模块添加到当前目标列表中,但是之后如何删除模块?
您无法删除特定模块,它们可能正在被当前 lldb 会话中的一个或另一个目标使用,如果是,则 lldb 无法删除它们。 出于功能原因,您也不需要这样做,因为 lldb 使用二进制文件的 UUID,而不仅仅是其名称,因此拥有错误 UUID 的旧模块不会执行任何操作,只会浪费一些虚拟机空间。
lldb 还会在调试会话之间保留所有模块,即使它们没有被使用,因为这使得同一 lldb 中的后续调试会话具有更快的周转时间。 大多数二进制文件共享许多相同的模块,因此缓存它们是一个有用的策略。
但是您可以通过运行告诉 lldb 查看缓存的模块列表并丢弃任何未使用的模块(未由任何目标引用):
(lldb) script lldb.debugger.MemoryPressureDetected()
但是,如果您的目标仍然存在,它可能仍在引用该模块,因此您可能需要在运行此 API 之前先删除该目标。
您可以使用
image list -g
命令查看所有缓存的模块(如果有帮助)...