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í .
- Reinicie su sistema Mantenga presionado el comando + R hasta que aparezca el logotipo de Apple en la pantalla.
- Seleccione el menú Utilidades / Tipo de terminal "csrutil enable --without debug" en la terminal
- 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:
Instale un gcc más nuevo (debe tomar alrededor de 60 minutos, dependiendo de su CPU, etc.)
brew instalar gcc
Descargue el código fuente de GDB
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`
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í
- Salir de gdb
- Usando su editor de texto, por ejemplo Sublime Text, guarde un archivo llamado ".gdbinit" [Excluir las comillas] en su carpeta de usuario.
- En el archivo, agregue lo siguiente: "configure startup-with-shell off" [Excluir las comillas]
- Guarda el archivo
- gdb ahora debería funcionar
Fuentes
https://discussions.apple.com/thread/7684629?start=0&tstart=0
asuma que su versión de MacOS es 10.12.6.
- actualice su gdb a la versión 8.0.1
brew upgrade gdb
- Ejecutar
echo "set startup-with-shell off" >> ~/.gdbinit
(Vi este comando cuando instalé gdb por brew) - crea un certificado con el nombre
gdb-cert
y confía en este certificado en la opción de firma de código - reinicia tu mac
- ejecute
sudo codesign -s gdb-cert /usr/local/bin/gdb
- ¡hecho! Diviértete ~
Por cierto, puedes usar lldb para reemplazar gdb.