¿Qué es exactamente el command "historial de memory"?

Resumen: recibí el post:

AddressSanitizer debugger support is active. Memory error breakpoint has been installed and you can now use it in the 'memory history' command.

¿Cuál es el command " memory history " y cómo exactamente lo uso?

Detalles:

  • Tenía un poco de código que tenía una advertencia de memory, que resultó en un crash.
  • Encendí el desinfectante de dirección yendo "Editar esquema"> "Ejecutar"> "Habilitar desinfectante de dirección".
  • Al encenderlo y ejecutar el mismo código nuevamente, el locking ya no sucedía, pero apareció el post.

¿Qué significa y qué es exactamente el command de historial de memory? ¿Como lo uso? He buscado, pero no he encontrado nada que responda a mi pregunta.

Solutions Collecting From Web of "¿Qué es exactamente el command "historial de memory"?"

Ejecutar bajo Address Sanitizer le permite ver cómo se asignaron los objects. El command del memory history necesita un puntero / dirección y mostrará cómo se asignó ese object (un stacktrace histórico de la asignación):

 (lldb) po self <MasterViewController: 0x61800000e080> (lldb) memory history 0x61800000e080 thread ... name = 'Memory allocated at' frame #0: 0x00000001051bba97 libclang_rt.asan_iossim_dynamic.dylib`wrap_calloc + 199 frame #1: 0x00000001064362fd libobjc.A.dylib`class_createInstance + 84 frame #2: 0x0000000106440dc7 libobjc.A.dylib`_objc_rootAlloc + 41 frame #3: 0x00000001072d6d25 UIKit`-[UIClassSwapper initWithCoder:] + 175 frame #4: 0x00000001074c731b UIKit`UINibDecoderDecodeObjectForValue + 683 ... 

¡Incluso funciona en objects ya desasignados, donde también muestra la traza inversa! Esto es extremadamente útil cuando accedes accidentalmente a un object ya liberado.