gpt4 book ai didi

ios - 使用 Xcode 调试 free()

转载 作者:行者123 更新时间:2023-11-29 13:34:26 25 4
gpt4 key购买 nike

我在尝试运行我正在开发的 iOS 应用程序时遇到以下错误:

appname(6097,0x3e835d98) malloc: *** error for object 0x20104600: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

我如何找出对 free() 的调用产生了这个错误?如果我为 malloc_error_break 添加断点,我得到的整个堆栈跟踪是对“malloc_error_break”的调用,如下所示:

libsystem_c.dylib`malloc_error_break:
0x32f20fa8: push {r7, lr} < Thread 1: breakpoint 1.1
0x32f20faa: mov r7, sp
0x32f20fac: nop
0x32f20fae: nop
0x32f20fb0: pop {r7, pc}
0x32f20fb2: nop

如果我不为 malloc_error_break 添加断点,我会得到一个同样无用的堆栈跟踪,但这次只有一个 __pthread_kill 和一个汇编程序指令。

我还能做些什么来更好地了解生成此错误的代码吗?

最佳答案

我刚刚使用以下 main 方法创建了一个名为“Test”的新项目:

void* data = malloc(100);    
free(data);
free(data);

然后我打开“Product->Edit Scheme”,单击“Test.app”选项卡并单击“Diagnostics”。然后我选择“启用 Guard Malloc”。

现在,如果我运行该应用程序,我会在第二次空闲时休息一下。

关于ios - 使用 Xcode 调试 free(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10971179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com