Here is how I debug APP with malloc stack history on idevice, it’s really complicate, but I have no other way to deal with an auto release pool memory problem.
-
You need A jailbreak idevice with developer tools installed, then you have gdb.
-
To enable malloc stack loggin, you need set environment variables MallocStackLoggingNoCompact and MallocStackLogging, we need some trick to do it.
First, we need grant your app root privilege.
mv -f /User/Application/xxxxxxxxxxxxx/YOUR_APP.app /Application/YOUR_APP.app
cd /Application
chown -R root:wheel YOUR_APP.app
chmod 4755 YOUR_APP.app/YOUR_APP
Rename your program
mv YOUR_APP.app/YOUR_APP YOUR_APP.app/BACK_UP_NAME
Use a short shell scrip to start your program, so we can keep the env. Save it to YOUR_APP.app/YOUR_APP
#!/bin/bash
export MallocStackLogging=1
export MallocStackLoggingNoCompact=1
exec /Applications/YOUR_APP.app/BACK_UP_NAME
Done.
Just start you app, touching on the icon or use open command, you’ll see a stack log file in /tmp
directory.
Use ps aux | grep YOUR_APP
find process id, gdb -p PROCESS_ID
attach to the progress, make a breakpoint, try info malloc ADDRESS
, malloc history will show up.