LLDB 如何删除当前目标列表中的模块

问题描述 投票:0回答:1

image add
会将新模块添加到当前目标列表中,但是之后如何删除模块?

lldb
1个回答
0
投票

您无法删除特定模块,它们可能正在被当前 lldb 会话中的一个或另一个目标使用,如果是,则 lldb 无法删除它们。 出于功能原因,您也不需要这样做,因为 lldb 使用二进制文件的 UUID,而不仅仅是其名称,因此拥有错误 UUID 的旧模块不会执行任何操作,只会浪费一些虚拟机空间。

lldb 还会在调试会话之间保留所有模块,即使它们没有被使用,因为这使得同一 lldb 中的后续调试会话具有更快的周转时间。 大多数二进制文件共享许多相同的模块,因此缓存它们是一个有用的策略。

但是您可以通过运行告诉 lldb 查看缓存的模块列表并丢弃任何未使用的模块(未由任何目标引用):

(lldb) script lldb.debugger.MemoryPressureDetected()

但是,如果您的目标仍然存在,它可能仍在引用该模块,因此您可能需要在运行此 API 之前先删除该目标。

您可以使用

image list -g
命令查看所有缓存的模块(如果有帮助)...

© www.soinside.com 2019 - 2024. All rights reserved.