2
votes

gdb sur macOs Mojave 10.14.2

  1. Version du système d'exploitation: macOs Mojave 10.14.2
  2. gdb: 8.2.1 (installer avec brew install gdb)
  3. J'ai réussi la conception du code avec

    codesign --entitlements gdb-droit.xml -fs gdb-cert $ (quel gdb)

  4. J'ai un code simple comme celui-ci:

    int main (int argc, char * argv []) { std :: cout

  5. gdb se bloque alors

    zhifandeMacBook-Pro: cpp-quick-start zhifan $ g ++ -g main.cpp

  6.     zhifandeMacBook-Pro:cpp-quick-start zhifan$ gdb ./a.out
        GNU gdb (GDB) 8.2.1
        Copyright (C) 2018 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.
        Type "show copying" and "show warranty" for details.
        This GDB was configured as "x86_64-apple-darwin18.2.0".
        Type "show configuration" for configuration details.
        For bug reporting instructions, please see:
        <http://www.gnu.org/software/gdb/bugs/>.
        Find the GDB manual and other documentation resources online at:
            <http://www.gnu.org/software/gdb/documentation/>.
    
        For help, type "help".
        Type "apropos word" to search for commands related to "word"...
        Reading symbols from ./a.out...Reading symbols from /Users/zhifan/github/cpp-quick-start/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
        done.
        (gdb) start
        Temporary breakpoint 1 at 0x100000f54: file main.cpp, line 5.
        Starting program: /Users/zhifan/github/cpp-quick-start/a.out
        [New Thread 0x1903 of process 11780]
        [New Thread 0x1a03 of process 11780]
        During startup program terminated with signal ?, Unknown signal.
        (gdb) set startup-with-shell off
        (gdb) start
        Temporary breakpoint 2 at 0x100000f54: file main.cpp, line 5.
        Starting program: /Users/zhifan/github/cpp-quick-start/a.out
        [New Thread 0x2707 of process 11806]
    

    Mon gdb est bloqué ici ([New Thread 0x2707 of process 11806]) tout le temps ..

    Je ne peux pas utiliser 8.0.1 depuis le problème commande de chargement inconnue 0x32 p>

    que puis-je faire d'autre?


0 commentaires

3 Réponses :


0
votes

D'accord, d'après mon expérience des deux dernières années de codage avec un MacBook Pro. Je n'ai jamais réussi à faire fonctionner gdb correctement. macOS utilise les outils Xcode Developer pour la compilation. Ces outils incluent lldb qui est très similaire à gdb.

Voici un site Web qui peut vous aider un peu à le faire. https://lldb.llvm.org/lldb-gdb.html Il s'agit d'une carte qui montre directement les outils gdb et les outils lldb. J'espère que cela vous aidera.


0 commentaires

1
votes

J'ai fait travailler gdb sur Mojave aujourd'hui par:

a) obtenir la dernière archive source gdb (au moment de l'écriture, ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-8.2.50.20190212.tar.xz ) - entre autres, il ajoute la gestion de la reconnaissance des exécutables sur Mac.

b) compile gdb. J'ai eu des erreurs pour l'observation des variables dans darwin-nat.c, j'ai donc édité le fichier et reconstruit.

c) suivez les étapes de https: // forward-in-code.blogspot.com/2018/11/mojave-vs-gdb.html

Voila!

(source: GDB activé Mac / Mojave: pendant le programme de démarrage terminé avec un signal?, Signal inconnu )


4 commentaires

J'ai fait travailler le mien avec eclipse, mais après une deuxième édition et une recompilation de mon code de test, il se bloque, j'ai dû redémarrer eclipse pour le faire fonctionner à nouveau .. je ne sais pas pourquoi ..


C'est la seule méthode que j'ai trouvée qui a réussi! 10.14.5


Je viens de télécharger le dernier gdb de MacPorts et j'étais heureux de voir que je n'avais plus l'erreur de `` chargement '' mentionnée ci-dessus. J'ai codé signé le code et j'ai été encouragé de voir qu'il avait détecté une erreur de segmentation que j'avais recherchée. J'ai recompilé le code et maintenant, gdb se bloque avec le même type de comportement décrit par l'OP. Très ennuyant! J'utilise Mojave 10.14.3. Les jours des Mac en tant que plate-forme de développement sont-ils comptés?


J'utilise gdb sur Mojave et cela fonctionne principalement . Mais de temps en temps, je reçois le message "New Thread ..." et gdb se bloque. J'ai trouvé qu'entrer dans le moniteur d'activité, forcer gdb à quitter, puis redémarrer gdb fonctionne généralement. D'autres erreurs, telles que "erreur de lecture de la variable ... plus que la taille maximale" surgissent souvent. Ces problèmes avec GDB et le fait que Valgrind ne fonctionne pas si bien sur OSX m'ont presque convaincu que passer à Linux pour le développement de code est la voie à suivre.



0
votes

Je suis entièrement d'accord avec @Tanner Breckenridge . gdb ne fonctionne tout simplement pas sur mon mac, peu importe ce que j'ai essayé. Utilisez simplement autre chose.

lldb semble bon, et pour tous ceux qui préfèrent un débogueur avec une interface graphique comme moi, je suggère d'utiliser Visual Studio Code ou Xcode pour déboguer votre programme C.


0 commentaires