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/lldb中查看内存分配的一种方法_C_Xcode_Macos_Lldb - Fatal编程技术网

在Xcode/lldb中查看内存分配的一种方法

在Xcode/lldb中查看内存分配的一种方法,c,xcode,macos,lldb,C,Xcode,Macos,Lldb,我有一个简单的程序,并设置了一个断点,以了解如何在调试接口中监视内存分配(而不是使用valgrind): 上述程序应分配大量内存。左边的“内存”图标似乎与动态内存分配无关(可能与Xcode本身使用的内存量有关)。是否有一个命令来查看在lldb中分配了多少内存,例如,类似于(gdb)call malloc_stats()?我知道有Instruments应用程序(我曾经使用过),但我更感兴趣的是能够在调试它的同时逐步了解总内存使用情况。或者,是否有一些GUI命令/面板会显示这一点?内存量表确实反映

我有一个简单的程序,并设置了一个断点,以了解如何在调试接口中监视内存分配(而不是使用valgrind):


上述程序应分配大量内存。左边的“内存”图标似乎与动态内存分配无关(可能与Xcode本身使用的内存量有关)。是否有一个命令来查看在
lldb
中分配了多少内存,例如,类似于
(gdb)call malloc_stats()
?我知道有Instruments应用程序(我曾经使用过),但我更感兴趣的是能够在调试它的同时逐步了解总内存使用情况。或者,是否有一些GUI命令/面板会显示这一点?

内存量表确实反映了程序分配的内存。如果你按照Jason的建议去做,你会发现随着你分配更多的内存,这个数字会上升

有两个命令:“内存区域”和“malloc_info”,它们将告诉您包含特定地址的内存的分配历史或状态。但是lldb没有一个通用的“显示所有分配的内存区域”命令,比如malloc_stats


您还可以使用Xcode“Debug Memory Graph”(调试内存图)按钮查看程序中的内存分配(包括所有Malloc块)。

您可能需要弄脏页面(向页面写入内容),以提高内存使用率。试着在你的分配中每16k写一些东西。@JasonMolenda——你说的“分配中每16k”是什么意思?memset是否会覆盖所有工作?我想他的意思是在你的“alloc”函数中,只要在返回的时候写入每个块(s[0]='z')。内核可能很聪明,没有提交您尚未写入的内存分配。谢谢--您可以显示“调试内存图”按钮的位置,或者如何访问/使用该命令/按钮吗?它是调试控制栏上三个圆圈连接成开放三角形的按钮-在步进控制之后的部分。如果要查看每个分配的堆栈,需要在正在调试的Xcode目标的运行方案的Diagnostics选项卡中打开Malloc Stack。它的文档在这里:。