mac español macos coredump

macos - keychain access mac español



¿Cómo generar volcados de núcleo en Mac OS X? (4)

Apple enumera varias formas de generar archivos de volcado de núcleo en su TN2124 o Mac OS X Debugging Magic .

Aquí hay un par de extractos:

Antes de Mac OS X 10.4, habilitaría los volcados de memoria en todo el sistema cambiando la línea "COREDUMPS = -NO-" en / etc / hostconfig a "COREDUMPS = -YES-" y luego reiniciando

Y

# BSH $ ulimit -c unlimited # CSH % limit coredumpsize unlimited

Incluso puedes hacerlo programáticamente:

#include <sys/resource.h> static bool EnableCoreDumps(void) { struct rlimit limit; limit.rlim_cur = RLIM_INFINITY; limit.rlim_max = RLIM_INFINITY; return setrlimit(RLIMIT_CORE, &limit) == 0; }

Parece que no puedo generar volcados de núcleo en Mac OS X 10.6.8.

$ ulimit -c unlimited $ ./a.out Hello world! Segmentation fault $ find ~/ -type f -name core # ls -la /cores/ total 0 drwxrwxr-t@ 2 root admin 68 24 jui 2010 . drwxrwxr-t 31 root admin 1122 17 oct 15:52 ..

Mi directorio actual, mi HOME y / cores / permanecen vacíos ...


De forma predeterminada, los bloqueos se informan en archivos .crash que se pueden encontrar en /Library/Logs/DiagnosticReports (en todo el sistema) y ~/Library/Logs/DiagnosticReports (usuario). Estos archivos se pueden abrir utilizando la aplicación de la Consola , en Informes del usuario o del sistema . Los archivos .crash están en formato de texto plano y deben incluir información relevante sobre el bloqueo.

Para activar los volcados de núcleo completos, asegúrese de que el directorio /cores tenga permisos de escritura para el usuario actual (prueba mediante: touch /cores/test && rm /cores/test ). Además, asegúrese de no tener ningún límite en el tamaño de los archivos principales al:

ulimit -c unlimited

El nombre del archivo de volcado del núcleo está en formato: core . PID .

Si el directorio está oculto, puede mostrar los archivos ocultos por:

defaults write com.apple.finder AppleShowAllFiles TRUE

Puedes probarlo con los siguientes comandos:

sleep 100 & killall -SIGSEGV sleep

que debería decir extra (core dumped) , después del mensaje de falla de segmentación .

Los archivos de volcado del núcleo deben encontrarse por defecto en el directorio /cores .

Ejemplo por comandos:

$ ulimit -c unlimited $ sleep 100 & $ killall -SIGSEGV sleep # Then press Enter few times till below message is shown [1]+ Segmentation fault: 11 (core dumped) sleep 100 $ ls /cores core.13652 $ lldb -c /cores/core.* (lldb) target create --core "/cores/core.13652" Core file ''/cores/core.13652'' (x86_64) was loaded. (lldb) bt * thread #1, stop reason = signal SIGSTOP * frame #0: 0x00007fffa7d13fde libsystem_kernel.dylib`__semwait_signal + 10 frame #1: 0x00007fffa7c9ab92 libsystem_c.dylib`nanosleep + 199 frame #2: 0x000000010c090002 sleep`rpl_nanosleep + 128

Ver también: Nota técnica TN2118 - Kernel Core Dumps .


En Mac OS X Yosemite, puede habilitar el volcado de núcleo por proceso utilizando LLDB. Suponiendo que su ID de proceso es 51918 , ejecute lo siguiente desde bash:

$ lldb (lldb) attach 51918 Process 51918 stopped * thread #1: tid = 0x6bf50, 0x00007fff927c14de libsystem_kernel.dylib`mach_msg_trap + 10, queue = ''com.apple.main-thread'', stop reason = signal SIGSTOP frame #0: 0x00007fff927c14de libsystem_kernel.dylib`mach_msg_trap + 10 libsystem_kernel.dylib`mach_msg_trap: -> 0x7fff927c14de <+10>: retq 0x7fff927c14df <+11>: nop libsystem_kernel.dylib`mach_msg_overwrite_trap: 0x7fff927c14e0 <+0>: movq %rcx, %r10 0x7fff927c14e3 <+3>: movl $0x1000020, %eax Executable module set to "/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/java". Architecture set to: x86_64h-apple-macosx. (lldb) expr long long * $limit = (long long *)malloc(16) (lldb) expr $limit[0] = 0x7fffffffffffffff (long long) $0 = 9223372036854775807 (lldb) expr $limit[1] = 0x7fffffffffffffff (long long) $1 = 9223372036854775807 (lldb) expr (int)setrlimit(4, $limit) (int) $2 = 0 (lldb) detach Process 51918 detached

Si el proceso causa una falla de segmentación, ahora encontrará un núcleo en /cores . Puede verificar si está enviando un SIGABRT a su proceso después de ejecutar lo anterior:

kill -ABRT 51918

Tenga en cuenta que la conexión al proceso que pertenece a la raíz no funcionará en macOSes recientes (El Capitán y superiores) de forma predeterminada debido a la Protección de integridad del sistema .


Puede generar archivos de volcado de núcleo en Mac Os X de esta manera:

  1. Cree el archivo: /etc/launchd.conf , luego:

    echo "limit core unlimited" | sudo tee -a /etc/launchd.conf

  2. Reinicie su Mac.

Y eso es todo, los archivos de volcado del núcleo se generan en el directorio /cores . Tenga cuidado ya que los archivos de volcado del núcleo son archivos grandes, de modo que cuando termine de solucionar su código, elimínelos.