在Mac OS X Snow Leopard上的iPhone模拟器上使用Valgrind

fut*_*te7 6 iphone valgrind ios-simulator

由于在我的iOS程序中看到随机内存崩溃,我决定使用Valgrind帮助解决问题,因为他们有一个在32位mac OS X上运行的端口.我按照此网页中的说明进行设置Valgrind在iPhone模拟器上:

http://landonf.bikemonkey.org/code/iphone/iPhone_Simulator_Valgrind.20081224.html

但是,虽然我可以让程序在iOS模拟器中编译,并且预处理程序标志设置,但我无法让Valgrind实际运行我的程序.它总是退出并出现以下错误:

valgrind: /Users/megahub/Library/Application Support/iPhone Simulator/4.2/Applications/6FD1FFF3-0EFB-4D81-A95A-F02E0AA9095E/QuamStockAdHoc.app/QuamStockAdHoc: cannot execute binary file

cannot execute binary file
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我已经验证了可执行文件存在于该路径中,因为我可以在模拟器中运行它而不使用Valgrind.

Dun*_*ern -4

为什么首先要使用 valgrind?您有 NSZombie 和朋友以及带有泄漏检查器的 Instruments。

如何设置:

  1. 转到 Xcode,选择您构建的产品(.app),双击它。(在 Xcode 4 菜单栏->产品->编辑方案中)
  2. 添加名为“NSZombieEnabled”的新环境变量并将值设置为“YES”

或者为了更多的控制:

  1. 在主目录中创建一个名为“.gdbinit”的新文件(注意前面的点),其中包含以下内容:

    fb -[NSException raise]
    fb -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:]
    fb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]
    set env MallocHelp=YES
    set env NSZombieEnabled=YES
    set env NSDallocateZombies=NO
    set env MallocCheckHeapEach=100000
    设置环境 MallocCheckHeapStart=100000
    设置环境 MallocScribble=YES
    设置环境 MallocGuardEdges=YES
    设置环境 MallocCheckHeapAbort=1
    设置环境 CFZombie 5
    fb -[_NSZombie init]
    fb -[_NSZombie keepCount]
    fb -[_NSZombie 保留]
    fb -[_NSZombie发布]
    fb -[_NSZombie autorelease]
    fb -[_NSZombie methodSignatureForSelector:]
    fb -[_NSZombie respondsToSelector:]
    fb -[_NSZombieforwardInspiration:] fb -
    [_NSZombie class]
    fb -[_NSZombie dealloc]
    fb szone_error

如果您在标准调试器中运行您的应用程序,现在它会在出现每个内存错误时停止。如果启动调试并观察控制台,您可以看到如果显示长内存调试器帮助文本,它是否有效。