如何为在XCode中以调试模式运行的iOS应用程序创建整个内存转储
我有一个应用程序在Xcode中以调试模式运行。我想检查应用程序的整个内存(堆栈和堆)。我知道我可以使用lldb进行转储。我使用以下命令:如何为在XCode中以调试模式运行的iOS应用程序创建整个内存转储,ios,xcode,memory,lldb,dump,Ios,Xcode,Memory,Lldb,Dump,我有一个应用程序在Xcode中以调试模式运行。我想检查应用程序的整个内存(堆栈和堆)。我知道我可以使用lldb进行转储。我使用以下命令: (lldb) memory read --outfile filename address 例如 ,但我需要指定内存的起始地址和大小。我不知道如何找到我的应用程序用来转储的内存区域。是否有可能找到内存的地址空间?是否存在其他转储方法(不使用lldb)?我不使用越狱设备。使用lldb python脚本桥接接口。它允许访问内存区域信息和内存数据本身,即使应用程序
(lldb) memory read --outfile filename address
例如
,但我需要指定内存的起始地址和大小。我不知道如何找到我的应用程序用来转储的内存区域。是否有可能找到内存的地址空间?是否存在其他转储方法(不使用lldb)?我不使用越狱设备。使用lldb python脚本桥接接口。它允许访问内存区域信息和内存数据本身,即使应用程序运行在物理设备上而不是模拟器上。不需要对应用程序进行任何更改 要访问内存,请执行以下操作:
- 将以下python脚本复制并保存到Mac。让我们把它命名为mem.py
导入lldb
def processAllMemoryRegions():
process=lldb.debugger.GetSelectedTarget().GetProcess()
MemoryRegionInfo=process.GetMemoryRegions()
numberOfMemoryRegions=MemoryRegionInfo.GetSize()
memoryRegionIndex=0
while(memoryRegionIndex
- 在断点上停止应用程序的执行
- 输入:脚本
- 导入python脚本:exec(open('/absolute/path/to/mem.py').read())
- 输入:processAllMemoryRegions()
process.ReadMemory
功能读取内存。检查上面剪下的样品
您还可以尝试通过以下方式启动脚本执行:
(lldb) command script import ~/path/to/script.py
这是描述和。。。但在我的例子中,这会导致XCode冻结。对其进行了描述
代码在Xcode 11.3.1上测试。看看
vmmap
我不确定是否可以以某种方式自检正在运行的进程(尤其是在iOS应用程序沙盒中)。对于lldb
的可能性,从processnote中使用的vmmap
API开始,由:实现的“heap”命令采用混合方法,将代码插入被调试对象以调用vm内省例程,然后向lldb添加Python命令以处理结果。如果您决定这样做,您可能会查看该代码以获得提示。
(lldb) command script import ~/path/to/script.py