tutorial - Señal de finalización desconocida cuando se utiliza el depurador gdb
how to use gdb (6)
He instalado GDB en Mac OS X y para probar que funciona, he usado este siguiente programa C.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int *my_array = (int *) malloc(5 * sizeof(int));
int i;
for (i = 0; i < 1000000; i++) {
my_array[i] = i;
}
free(my_array);
return 0;
}
Tengo un error al compilarlo, que es normal (falla de segmentación)
Sin embargo, cuando agrego el indicador -g en el comando de compilación y ejecuto gdb en mi programa compilado, aparece este mensaje después de ejecutar el comando
During startup program terminated with signal ?, Unknown signal.
Realmente no sé de dónde viene. He agregado un certificado para garantizar que gdb funcione correctamente en OS X pero no he encontrado nada para solucionar este problema.
Puede haber muchas razones para estas señales desconocidas 1) Creo que en Linux hay un límite para el tamaño máximo de la memoria. 2) Tal vez tu sistema estaba demasiado cargado 3) Tu programa tiene mala administración de memoria y terminas con una memoria fragmentada, por lo que malloc no puede obtener el tamaño de fragmento que solicitaste. 4) Tu programa corrompe las estructuras internas de datos de malloc, es decir, el mal uso del puntero
Si estás en Sierra, eso es lo esperado. GDB no es compatible con macOS Sierra, incluso la última versión (7.12).
Tal vez deberíamos esperar a otro lanzamiento de GDB, o para otra actualización de macOS para solucionar el error.
Sierra (10.12) no parece ser compatible con gdb
. Intenté seguir un tutorial que me hizo crear un certificado. Después, cuando ejecuté gdb
, mencioné el mismo error mencionado.
Apple usa lldb
. Funciona bien, y puede integrarse con Eclipse, según me han dicho. Aquí hay un enlace .
Para mí, funcionó perfectamente en MacOS Sierra versión 10.12.4 simplemente desinstalando e instalando gdb como,
- Desinstalar GDB
$ brew uninstall gdb
- Instalar GDB
$ brew install gdb
Esto instalará el último gdb que es compatible con MacOS Sierra.
Espero que esta ayuda a cualquiera!
De esta respuesta: https://.com/a/40437725/1060955
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://.com/a/40437725/1060955
https://discussions.apple.com/thread/7684629?start=0&tstart=0
¿Dónde se encuentra .gdbinit y cómo puedo editarlo?
Instalé gdb a través de Homebrew. Al final de la instalación dice:
El 10.12 (Sierra) o posterior con SIP, necesita ejecutar esto:
echo "set startup-with-shell off" >> ~/.gdbinit
Esto fue necesario para que funcione. También tuve que asegurarme de que .gdbinit
estuviera configurado en la configuración de Eclipse Debug