问题标签 [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.
iphone - iPhone - 调试“未分配指针被释放”错误
当过度释放指针时,您可能会看到错误,例如
“未分配被释放的指针”
在使用模拟器进行调试时,我添加了一个构建参数 MallocStackLogging = YES - 这允许我在终端中使用 malloc_history 来追踪我过度释放指针的位置。
如果我使用此构建参数在设备上进行调试,我会收到各种控制台错误“无法创建堆栈日志文件”等。
奇怪的是,我在设备上出现了一些过度释放的指针错误,但在模拟器上却没有。
有没有人有使用设备本身追踪这些的经验?
谢谢!
glibc - mtrace + MALLOC_TRACE - 禁用缓冲
如何禁用缓冲mtrace
并输出名称来自的文件MALLOC_TRACE
?
mtrace 启动为:
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 中删除一个视图,然后将其释放。只需释放它即可修复。
objective-c - 释放实例 | “Malloc_history 无法检查进程 XYZ,因为该进程不存在。”
我有内存问题(是的;)我是 iOS 新手)在自定义 UIView 中使用以下方法:
头文件
实现绘制一个圆圈和一个带有与触摸相关的压力的标签。每次手指触摸都会创建此视图的对象:
只要控制器不调用以下方法来更新此特定触摸的感测压力,一切都可以正常工作。
我收到以下错误:
这让我在应用程序崩溃后调查调试控制台中的内存跟踪:shell malloc_history <PID> 0x17dfb0
. 结果控制台返回:
malloc_history cannot examine process 5838 because the process does not
存在。
所以这里的问题:
- 有人可以在这里看到明显的保留、释放问题吗?
- 我怎样才能
malloc_history <PID> <Address
> 工作?
感谢您的时间,重定向和答案!
基督教
iphone - 如何在设备上使用 MallocStackLogging?
我想用MallocStackLogging
. 该错误涉及陀螺仪,因此我必须在设备而不是模拟器上进行调试。
我已经设置了MallocStackLogging
环境变量并且 iPhone 正确记录了 mallock 堆栈日志:
现在我该如何与他们合作?
我可以使用 Xcode Organizer 将它们传输到 Mac。但是我应该如何处理这两个文件呢?
- 堆栈日志.1856.MyApp.index
- 堆栈日志.1856.MyApp.e8z3IL.link
我尝试在 Mac 上移动 /tmp 中的文件并调用:
显然,该malloc_history
命令在本地机器上查找正在运行的进程。我缺少手动指定日志文件的选项。
有没有办法让它在(非越狱)设备上直接使用 Xcode 或在将日志传输到 Mac 之后工作?
ios - malloc_history 无法检查进程 xxxxxx,因为该进程在 iOS 中不存在
我将以下环境变量添加到我的项目中并将它们的值设置为 YES。
NSDebugEnabled NSZombieEnabled MallocStackLogging MallocStackLoggingNoCompact
我遵循了http://www.cocoadev.com/index.pl?DebuggingAutorelease中的程序
我能够根据生成的日志找到问题。我的疑问是,当我试图查找堆栈跟踪以查找对象的分配位置时,我得到了以下信息:
malloc_history 无法检查进程 6963,因为该进程不存在。
我在这里错过了什么吗?
以下是创建的日志:
更新:
我发现下面的链接是一个很好的信息来源:
我还没有测试这个。
xcode4.2 - 在 Xcode 4.2 查看 malloc 历史
我试图在 Xcode 4.2 中找到一个释放的实例错误。我启用了 Zombie Objects、Guard Malloc 和 Malloc Stack 选项。
在控制台中,我使用 Shell malloc_history pid address 并没有显示任何内容。
我的问题是任何人都知道如何查看 Xcode 4.2 中对象的 malloc 历史或我做错了什么?
谢谢。
xcode - 获取当前执行的应用程序的 PID
在 XCode 上调试时,我想从这个示例中了解如何获取当前调试的应用程序的 PID;
2012-07-02 16:02:02.124 应用名称[14995:700]
其中哪一个是pid?我需要获取 pid,因为我想使用 malloc_history 检查内存泄漏,这需要应用程序的 pid,
我尝试了 ff: 组合,
但我总是得到该进程在历史记录中不存在(malloc_history 找不到您有权访问的进程,其名称类似于“”)
c++ - 视觉工作室中是否有相当于 malloc_history 的东西?
我正面临一个很难找到的错误。基本上发生的情况是,一个线程释放了一个内存块,而另一个线程仍然有对它的引用(这不是我的代码,它让一切变得更加困难......)。
我是 Windows 平台上的新手,但我已经尝试在启用应用程序验证程序和 PageHeap 的情况下运行它 - 存在的问题是错误不再发生(可能是因为现在一切都变慢了 - 所以我正在处理经典比赛-健康)状况)。在 Linux 下,我会尝试使用 Valgrind 来解决这种错误 - 但这可能与 Application Verifier 具有相同的效果(不再看到错误......)。
在 Mac OS XI 上,将使用 malloc_history 来跟踪此错误。那么在 Visual Studio 或 WinDbg 中是否有等价物?我想做的是以下几点:
- 在调试器中运行程序,直到它因段错误而中断
- 获取已释放对象的地址,并从那里获取实际删除块的堆栈跟踪。
使用某些 Windows/Visual Studio 工具可以做到这一点吗?