29 votes

Signal de fin inconnu lors de l'utilisation du débogueur gdb

J'ai installé GDB sur Mac OS X et pour tester que cela fonctionne, j'ai utilisé ce programme C suivant.

#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;

}

J'ai une erreur lors de la compilation, ce qui est normal (erreur de segmentation)

Cependant, lors de l'ajout de l'option-g drapeau lors de la compilation de commande et l'exécution de gdb sur mon programme compilé, j'ai ce message après le lancement de la commande exécuter

During startup program terminated with signal ?, Unknown signal.

Ne sais vraiment pas d'où il vient. J'ai ajouté un certificat pour s'assurer que gdb fonctionne correctement sur OS X, mais je n'ai rien trouvé pour résoudre ce problème.

32voto

Parth Mehrotra Points 118

À partir de cette réponse: https://stackoverflow.com/a/40437725/1060955

C'est de cette façon que j'facilement résolu le problème. [Mise à jour: sur la base des commentaires reçus et encore à vérifier, il semble que cette solution fonctionne avec macOS Sierra 10.12 mais pas avec macOS Sierra 10.12.2]

Voir les instructions vidéo ici

Quittez gdb

À l'aide de votre éditeur de texte par exemple Sublime de Texte, enregistrer un fichier appelé ".gdbinit" [Exclure les guillemets] dans votre dossier utilisateur.

Dans le fichier, ajoutez la ligne suivante: "set de démarrage-avec-shell off" [Exclure les guillemets]

Enregistrez le fichier

gdb devrait maintenant fonctionner

Sources

https://stackoverflow.com/a/40437725/1060955

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

Où est .gdbinit est situé et comment puis-je le modifier?

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

27voto

Houssem Nouira Points 314

Si vous êtes sur Sierra, c'est normal. GDB n'est pas compatible avec macOS Sierra, même la dernière version (7.12).

Nous devrions peut-être attendre une autre version de GDB, ou une autre mise à jour pour macOS afin de corriger le bogue.

11voto

Muhammad Points 109

J'ai installé gdb via Homebrew. À la fin de l'installation, il est indiqué:

Sur 10.12 (Sierra) ou version ultérieure avec SIP, vous devez exécuter ceci:

 echo "set startup-with-shell off" >> ~/.gdbinit
 

C'était nécessaire pour le faire fonctionner. J'ai également dû m'assurer que .gdbinit était défini dans la configuration de débogage Eclipse

5voto

Pankaj Points 49

Pour moi, cela a parfaitement fonctionné sur MacOS Sierra version 10.12.4 en désinstallant et en installant simplement gdb as,

  1. Désinstaller GDB

$ brew uninstall gdb

  1. Installer GDB

$ brew install gdb

Cela installera la dernière gdb qui est compatible avec MacOS Sierra.

J'espère que cette aide à personne!

2voto

audrow Points 90

Sierra (10.12) ne semble pas prendre en charge gdb . J'ai essayé de suivre un tutoriel qui m'a fait créer un certificat. Ensuite, lorsque j'ai exécuté gdb , j'ai eu la même erreur mentionnée.

Apple utilise lldb . Cela fonctionne bien et peut s'intégrer à Eclipse, m'a-t-on dit. Voici un lien .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X