web-dev-qa-db-fra.com

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

J'ai installé GDB sur Mac OS X et pour tester son fonctionnement, 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 sa compilation, ce qui est normal (défaut de segmentation)

Cependant, lorsque en ajoutant l'indicateur -g dans la commande de compilation et en exécutant gdb sur mon programme compilé, j'ai ce message après avoir lancé la commande exécuter

During startup program terminated with signal ?, Unknown signal.

Je ne sais vraiment pas d'où ça vient. J'ai ajouté un certificat pour m'assurer que gdb fonctionne correctement sur OS X mais je n'ai rien trouvé pour résoudre ce problème.

28
Pierre P.

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.

27
Houssem Nouira

De cette réponse: https://stackoverflow.com/a/40437725/1060955

C'est ainsi que j'ai facilement résolu le problème. [Mise à jour: sur la base des commentaires reçus et à 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

Quitter gdb

Utiliser votre éditeur de texte, par exemple Sublime Text, enregistrez un fichier appelé ".gdbinit" [Exclure les guillemets] dans votre dossier utilisateur.

Dans le fichier, ajoutez ce qui suit: "set startup-with-Shell off" [Exclure les guillemets]

Sauvegardez le fichier

gdb devrait maintenant fonctionner

Sources

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

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

Où se trouve .gdbinit et comment puis-je le modifier?

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

31
Parth Mehrotra

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. Je devais également m'assurer que le .gdbinit a été défini dans la configuration de débogage Eclipse

9
Muhammad

Pour moi, cela a parfaitement fonctionné 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!

5
Pankaj