gdb macos-sierra

El tipo de GDB no funciona en macOS Sierra



macos-sierra (6)

Esto se debe a una función de protección de integridad en tiempo de ejecución en Sierra: puede desactivarla siguiendo las instrucciones aquí .

  1. Reinicie su sistema Mantenga presionado el comando + R hasta que aparezca el logotipo de Apple en la pantalla.
  2. Seleccione el menú Utilidades / Tipo de terminal "csrutil enable --without debug" en la terminal
  3. Finalmente, reinicia tu máquina de nuevo

Tenga en cuenta que deshabilitar esto disminuirá la seguridad de su sistema, por lo que hacer lo anterior realmente debería ser su decisión.

Otro impacto de este cambio es que la variable DYLD_LIBRARY_PATH ya no se restablece cuando se generan nuevos procesos a través del shell. El vinculador dinámico usa esta variable para buscar bibliotecas dinámicas. Tiene prioridad sobre la ruta de búsqueda codificada en los archivos ejecutables, por lo que el SO la considera insegura. Como resultado, macOS de forma predeterminada desarma la variable para que el ejecutable que genere use sus propias bibliotecas. Recomendamos utilizar DYLD_FALLBACK_LIBRARY_PATH en su lugar, que viene después de la ruta de búsqueda de la biblioteca de la aplicación, en caso de que todavía no se encuentren algunas bibliotecas.

Es un problema que apareció cuando primero actualicé a macOS Sierra ayer.

GDB en sí mismo está funcionando bien. Sin embargo, de alguna manera, no puede ejecutar mi programa. Cuando escribo ''ejecutar'' y ''enter'', inmediatamente se bloquea con la información: During startup program terminated with signal SIG113, Real-time event 113.

Mi GDB está basado en homebrew. Así que hoy, desinstalé todo el paquete homebrew y lo reinstalé. Después del paso codesign, aún enfrenté el mismo error.

Intenté ''sudo'' y algunas otras cosas. Google no tenía idea de lo que sucedió. Entonces me preguntaba si ustedes podrían tener alguna solución mágica.


Las soluciones múltiples que funcionaron para Sierra 10.12.0 no funcionan con Sierra 10.12.1. Con esta versión, necesita una versión actualizada de GDB (parche comprometido en FSF el 9 de noviembre), además de deshabilitar el desove del shell con ''set startup-with-shell off''. Ver instrucciones en http://blog.adacore.com/gnat-on-macos-sierra


Obtuve el mismo error después de actualizar a macOS Sierra. Temporalmente cambié el depurador a LLDB usando la biblioteca lldbmi2 :
1. git clone https://github.com/freedib/lldbmi2.git lldbmi2
2. cd lldbmi2
3. mkdir build
4. cd build
5. cmake ../
6. make
7. sudo make install

Una vez que lldbmi2 está instalado, puede depurar su aplicación creando una nueva aplicación C / C ++ en Configuraciones de depuración ... y cambiar el depurador GDB (en la pestaña Depurador) de gdb a lldbmi2. Las opciones para lldbmi2 se pueden establecer allí. Algo como / usr / local / bin / lldbmi2 --log.

Todo parece estar funcionando bien, y aún mejor como GDB.


He estado teniendo problemas múltiples con Sierra.

Para empezar, mi código que había trabajado en versiones anteriores de OSX ha dejado de funcionar en esta versión. Tampoco compilaría. Además, GDB de brew es un completo desastre. Agregar que otras bibliotecas de terceros se rompieron (por ejemplo, libevent).

("Buen trabajo" Apple).

Después de "actualizar" a Sierra, sugiero los siguientes pasos para que GDB funcione:

  1. Instale un gcc más nuevo (debe tomar alrededor de 60 minutos, dependiendo de su CPU, etc.)

    brew instalar gcc

  2. Descargue el código fuente de GDB

  3. Dado que gcc y g ++ tienen un alias al viejo gcc yg ++, asegúrese de vincularlo al gcc y g ++ más nuevos, por ejemplo:

    exportar CC = `que gcc-6`

    exportar CXX = `que gxx-6`

  4. Configurar y compilar gdb:

    ./configure

    make CFLAGS = -Wno-error = declaraciones en desuso CXXFLAGS = -Wno-error = declaraciones en desuso

    sudo make install


Así es como solucioné el problema fácilmente. [Actualización: según los comentarios recibidos y aún por verificar, parece que esta solución funciona con macOS Sierra 10.12 pero no con macOS Sierra 10.12.2]

Ver video instrucciones aquí

  1. Salir de gdb
  2. Usando su editor de texto, por ejemplo Sublime Text, guarde un archivo llamado ".gdbinit" [Excluir las comillas] en su carpeta de usuario.
  3. En el archivo, agregue lo siguiente: "configure startup-with-shell off" [Excluir las comillas]
  4. Guarda el archivo
  5. gdb ahora debería funcionar

Fuentes

https://discussions.apple.com/thread/7684629?start=0&tstart=0

¿Dónde se encuentra .gdbinit y cómo puedo editarlo?

https://sourceware.org/gdb/onlinedocs/gdb/Starting.html


asuma que su versión de MacOS es 10.12.6.

  1. actualice su gdb a la versión 8.0.1 brew upgrade gdb
  2. Ejecutar echo "set startup-with-shell off" >> ~/.gdbinit (Vi este comando cuando instalé gdb por brew)
  3. crea un certificado con el nombre gdb-cert y confía en este certificado en la opción de firma de código
  4. reinicia tu mac
  5. ejecute sudo codesign -s gdb-cert /usr/local/bin/gdb
  6. ¡hecho! Diviértete ~

Por cierto, puedes usar lldb para reemplazar gdb.