问题标签 [malloc-history]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
26193 浏览

iphone - iPhone - 调试“未分配指针被释放”错误

当过度释放指针时,您可能会看到错误,例如

“未分配被释放的指针”

在使用模拟器进行调试时,我添加了一个构建参数 MallocStackLogging = YES - 这允许我在终端中使用 malloc_history 来追踪我过度释放指针的位置。

如果我使用此构建参数在设备上进行调试,我会收到各种控制台错误“无法创建堆栈日志文件”等。

奇怪的是,我在设备上出现了一些过度释放的指针错误,但在模拟器上却没有。

有没有人有使用设备本身追踪这些的经验?

谢谢!

0 投票
1 回答
565 浏览

glibc - mtrace + MALLOC_TRACE - 禁用缓冲

如何禁用缓冲mtrace并输出名称来自的文件MALLOC_TRACE

mtrace 启动为:

0 投票
2 回答
3451 浏览

iphone - 未分配被释放的指针。复杂 malloc 历史帮助

我已按照此处有用链接的指南进行操作:

iPhone - 调试“未分配指针被释放”错误

但是 malloc_history 真的让我陷入了一个循环,任何人都可以阐明以下内容:

0 投票
2 回答
6827 浏览

objective-c - 了解 malloc_history 转储

如果您曾经问​​过我如何在 Objective-c 中调试发布/分配问题,您会遇到这些有助于追踪问题的环境设置:

  • NSZombieEnabled- 发布后保留下流,所以你可以得到指针等。
  • MallocStackLogging- 保留对象历史以供以后参考
  • NSDebugEnabled

您将所有这些设置为YES在“可执行文件”(在组树中找到)信息的“参数”选项卡的“环境”部分中。


所以,我得到这个控制台输出

MyApp [ 4413 :40b]-[CALayer retainCount]:消息发送到已释放实例0x4dbb170

然后打开终端,而调试器已转发中断并键入:

malloc_history 4413 0x4dbb170

然后,我得到一个大文本转储,据我了解,重要的是:

1

2

3

我不明白的是,如果它的历史是 ALLOC、FREE、ALLOC 那么为什么错误表明它已被释放(净 +1 分配)?

还是我对转储的理解是错误的?


编辑(新运行=不同的对象指针):

用仪器检测僵尸:

为什么以及如何,保留计数从 1 跳到 -1?

查看 Zombie 的回溯,看起来保留计数被调用:Quartz through release_root_if_unused


编辑:已解决-我正在从 super 中删除一个视图,然后将其释放。只需释放它即可修复。

0 投票
1 回答
1192 浏览

objective-c - 释放实例 | “Malloc_history 无法检查进程 XYZ,因为该进程不存在。”

我有内存问题(是的;)我是 iOS 新手)在自定义 UIView 中使用以下方法:

头文件

实现绘制一个圆圈和一个带有与触摸相关的压力的标签。每次手指触摸都会创建此视图的对象:

只要控制器不调用以下方法来更新此特定触摸的感测压力,一切都可以正常工作。

我收到以下错误:

这让我在应用程序崩溃后调查调试控制台中的内存跟踪:shell malloc_history <PID> 0x17dfb0. 结果控制台返回:

malloc_history cannot examine process 5838 because the process does not存在。

所以这里的问题:

  1. 有人可以在这里看到明显的保留、释放问题吗?
  2. 我怎样才能malloc_history <PID> <Address> 工作?

感谢您的时间,重定向和答案!

基督教

0 投票
3 回答
12050 浏览

iphone - 如何在设备上使用 MallocStackLogging?

我想用MallocStackLogging. 该错误涉及陀螺仪,因此我必须在设备而不是模拟器上进行调试。

我已经设置了MallocStackLogging环境变量并且 iPhone 正确记录了 mallock 堆栈日志:

现在我该如何与他们合作?

我可以使用 Xcode Organizer 将它们传输到 Mac。但是我应该如何处理这两个文件呢?

  • 堆栈日志.1856.MyApp.index
  • 堆栈日志.1856.MyApp.e8z3IL.link

我尝试在 Mac 上移动 /tmp 中的文件并调用:

显然,该malloc_history命令在本地机器上查找正在运行的进程。我缺少手动指定日志文件的选项。

有没有办法让它在(非越狱)设备上直接使用 Xcode 或在将日志传输到 Mac 之后工作?

0 投票
2 回答
1487 浏览

ios - malloc_history 无法检查进程 xxxxxx,因为该进程在 iOS 中不存在

我将以下环境变量添加到我的项目中并将它们的值设置为 YES。

NSDebugEnabled NSZombieEnabled MallocStackLogging MallocStackLoggingNoCompact

我遵循了http://www.cocoadev.com/index.pl?DebuggingAutorelease中的程序

我能够根据生成的日志找到问题。我的疑问是,当我试图查找堆栈跟踪以查找对象的分配位置时,我得到了以下信息:

malloc_history 无法检查进程 6963,因为该进程不存在。

我在这里错过了什么吗?

以下是创建的日志:

在此处输入图像描述

更新:

我发现下面的链接是一个很好的信息来源:

无法追踪的奇怪 GDB 错误

我还没有测试这个。

0 投票
1 回答
2884 浏览

xcode4.2 - 在 Xcode 4.2 查看 malloc 历史

我试图在 Xcode 4.2 中找到一个释放的实例错误。我启用了 Zombie Objects、Guard Malloc 和 Malloc Stack 选项。

在控制台中,我使用 Shell malloc_history pid address 并没有显示任何内容。

我的问题是任何人都知道如何查看 Xcode 4.2 中对象的 malloc 历史或我做错了什么?

谢谢。

0 投票
1 回答
1979 浏览

xcode - 获取当前执行的应用程序的 PID

在 XCode 上调试时,我想从这个示例中了解如何获取当前调试的应用程序的 PID;

2012-07-02 16:02:02.124 应用名称[14995:700]

其中哪一个是pid?我需要获取 pid,因为我想使用 malloc_history 检查内存泄漏,这需要应用程序的 pid,

我尝试了 ff: 组合,

但我总是得到该进程在历史记录中不存在(malloc_history 找不到您有权访问的进程,其名称类似于“”)

0 投票
1 回答
209 浏览

c++ - 视觉工作室中是否有相当于 malloc_history 的东西?

我正面临一个很难找到的错误。基本上发生的情况是,一个线程释放了一个内存块,而另一个线程仍然有对它的引用(这不是我的代码,它让一切变得更加困难......)。

我是 Windows 平台上的新手,但我已经尝试在启用应用程序验证程序和 PageHeap 的情况下运行它 - 存在的问题是错误不再发生(可能是因为现在一切都变慢了 - 所以我正在处理经典比赛-健康)状况)。在 Linux 下,我会尝试使用 Valgrind 来解决这种错误 - 但这可能与 Application Verifier 具有相同的效果(不再看到错误......)。

在 Mac OS XI 上,将使用 malloc_history 来跟踪此错误。那么在 Visual Studio 或 WinDbg 中是否有等价物?我想做的是以下几点:

  • 在调试器中运行程序,直到它因段错误而中断
  • 获取已释放对象的地址,并从那里获取实际删除块的堆栈跟踪。

使用某些 Windows/Visual Studio 工具可以做到这一点吗?