Xcode Guard Malloc and on Device Debugging: 'libgmalloc.dylib' image not found

I enabled memory checking in Xcode (Edit Scheme -> Options). I'm now getting the following when I perform on device debugging: dyld: could not load inserted library '/usr/lib/libgmalloc.dylib' because image not found. The measure was taken proactively in hopes of catching mistakes early in the cycle.

Is memory checking not valid on a device? It appears its valid since it was acknowledged and investigated according to http://lists.apple.com/archives/xcode-users/2012/Mar/msg00271.html. Also, Xcode had no complaints during compile and link. If its not valid for a device, why is Xcode inserting the library? Are there any solutions? Googling returned a few hits, but I did not see any concrete solutions.

How does one enable Xcode Guard Malloc when debugging on a device?


Solution 1:

You can't use GuardMalloc on the device.

Solution 2:

To work around, I created two new Xcode schemes. One is named 'XXX Device' and does not include the malloc guards; the second is 'XXX Simulator' and does include the malloc guards.

Adding a scheme for device/simulator purposes is questionable (http://www.cocoabuilder.com/archive/xcode/303307-why-does-xcode-create-nonsensical-destinations-in-every-scheme.html). Apparently, Dave Duncan has not encountered an issue where Xcode does not do something correctly (or he does not use tools such as malloc guards).

This reeks of Cupertino software junk. +1 to Apple and its crappy QA department (if it exists) which let another bug fly free.

Solution 3:

As others answered, you can not use Enable Guard Malloc on device, but you can use it on simulator.

All 3 other memory management options, as of Xcode 7.3.1, can be used on device: Enable Malloc Scribble, Enable Malloc Guard Edges and Enable Zombie Objects.

Solution 4:

Rebooting device fixed it. iOS hasn't updated. Really bad !