¿Alguien consigue que Address-Sanitizer (conocido como asan o -fsanitize = address) funcione para iOS?

Desinfectante de direccioneshttps://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

He compilado mi propio llvm (compilación bastante directa) porque llvm de Apple no es compatible con esta función.

He probado el programa de línea de comandos clang for mac, funciona (pero sin mostrar la línea del código fuente).

Para iOS, todavía hay algunos problemas:

compilar la versión del simulador: informe de error para el encabezado precompilado:

En el archivo incluido de /Users/fluke/Documents/projects/tmp/testAsanNoARC/testAsanNoARC/testAsanNoARC-Prefix.pch:12: En el archivo se incluye desde /Applications/Xcode.app/Contents/Developer/PpP.P.P.P. SDKs / iPhoneSimulator6.1.sdk / System / Library / Frameworks / UIKit.framework / Headers / UIKit.h: 9: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6 .sdk / System / Library / Frameworks / UIKit.framework / Headers / UIAccelerometer.h: 53: 24: error: 'UIAccelerometer' no está disponible: no disponible en OS X - (vacío) acelerómetro: (UIAccelerometer *) acelerómetro didAccelerate :( UIAcceleration *) aceleración NS_DEPRECATED_IOS (2_0, 5_0); ^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIAccelerometer.h:33 la declaración se ha marcado explícitamente como no disponible aquí @interface UIAccelerometer: NSObject {^ /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Disveloper/Frestracscelss/spanol/spanol/spanol/spanol/spanol/Systems/iPhoneSimulator6.1.sdk/System/Library/Frams_s. /Headers/UIAccelerometer.h:53:71: error: 'UIAcceleration' no está disponible: no está disponible en OS X - (vacío) acelerómetro: (UIAccelerometer *) acelerómetro didAccelerate: (UIAcceleration *) aceleración NS_DEPRECATED_IOS (2_0, 5_0); ...

compilar para la versión del dispositivo, informa la falta de libarc (pero en realidad no habilito ARC)

ld: archivo no encontrado: /Usuarios/fluke/Documents/tools/asan/Debug+Asserts/lib/arc/libarclite_iphoneos.a clang: error: el comando del vinculador falló con el código de salida 1 (use -v para ver la invocación)

así que trato de usarlo para una biblioteca por separado: solo tengo un nuevo objetivo de lib y uso mi propio sonido, mientras que el objetivo principal todavía usa el llvm de Apple. el programa se compila (es posible que deba vincularse a asan dylib en el llvm integrado), pero no funciona porque no es necesario que se cargue antes de la entrada de nuestro programa.

¿Quién tiene experiencia en hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta