Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为在XCode中以调试模式运行的iOS应用程序创建整个内存转储_Ios_Xcode_Memory_Lldb_Dump - Fatal编程技术网

如何为在XCode中以调试模式运行的iOS应用程序创建整个内存转储

如何为在XCode中以调试模式运行的iOS应用程序创建整个内存转储,ios,xcode,memory,lldb,dump,Ios,Xcode,Memory,Lldb,Dump,我有一个应用程序在Xcode中以调试模式运行。我想检查应用程序的整个内存(堆栈和堆)。我知道我可以使用lldb进行转储。我使用以下命令: (lldb) memory read --outfile filename address 例如 ,但我需要指定内存的起始地址和大小。我不知道如何找到我的应用程序用来转储的内存区域。是否有可能找到内存的地址空间?是否存在其他转储方法(不使用lldb)?我不使用越狱设备。使用lldb python脚本桥接接口。它允许访问内存区域信息和内存数据本身,即使应用程序

我有一个应用程序在Xcode中以调试模式运行。我想检查应用程序的整个内存(堆栈和堆)。我知道我可以使用lldb进行转储。我使用以下命令:

(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
  • 在断点上停止应用程序的执行
在lldb窗口中

  • 输入:脚本

  • 导入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