¿Es posible ejecutar valgrind en el simulador y dispositivo iOS?

Debo depurar desbordamientos de stack en un proyecto muy grande. Después de jugar un poco con valgrind, parece ser la herramienta perfecta para detectar desbordamientos de bloque de stack en C, así que me gustaría ejecutar nuestra aplicación de iOS con él.

He construido e instalado valgrind desde tronco en OS X Yosemite y he escrito un progtwig de testing con desbordamientos intencionales de montón y he verificado que valgrind los captura e informa sobre ellos.

Ahora quiero ejecutar una aplicación de testing en el simulador con ella. He leído que se puede ejecutar en el simulador de iOS usando execl (), pero cuando lo hago, veo el siguiente error en la console.

dyld: falta command de carga LC_DYLD_INFO

Después de eso, la aplicación se bloqueará en dyldbootstrap :: rebaseDyld () con EXC_BAD_ACCESS. ¿Hay algo más necesario aquí? Valgrind aparentemente también es compatible con arm64 ahora también. ¿Es posible empaquetar el ejecutable valgrind con mi aplicación y ejecutarlo en un dispositivo?

#define VALGRIND "/usr/local/bin/valgrind" int main(int argc, char * argv[]) { if ( argc >= 2 && strcmp(argv[1], "-valgrind") == 0 ) { if ( execl(VALGRIND, VALGRIND, argv[0], NULL) < 0 ) { NSLog(@"Failed to relaunch under valgrind"); exit(1); } NSLog(@"Running under valgrind!!"); } @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 

    Puede usar xcrun simctl spawn para iniciar un process arbitrario en el simulador pero no puede ejecutar ejecutables macOS en el entorno del simulador. Comparte el kernel con macOS pero es distinto. Tendrías que build Valgrind para iOS, luego dejarlo en el directory de datos del dispositivo y tratar de generarlo.