7 votes

GDB se bloque après "New Thread" sous MacOS

J'ai construit GDB à partir des sources sous MacOS 12.0 et l'ai signé. Cependant, chaque fois que j'essaie de déboguer un programme, j'obtiens ceci :

(gdb) b main
Breakpoint 1 at 0x10000324f: file main.cpp, line 50.
(gdb) run
Starting program: /Users/fluzzlesnuff/Documents/C++/a.out
[New Thread 0x2a03 of process 2389]

et ensuite GDB se bloque. J'ai compilé des programmes C++ avec g++. Voici ce que j'ai essayé :

  1. Compiler avec l'option -g.
  2. Compiler avec l'option -ggdb.
  3. Compiler avec l'option -ggdb3.
  4. Exécuter avec sudo
  5. Tuer et relancer gdb à plusieurs reprises.
  6. Essayez différents binaires.
  7. Désactiver SIP
  8. Ajouter des points d'arrêt supplémentaires.
  9. set startup-with-shell off en .gdbinit

Je le fais. pas obtenir les erreurs de taskgated / Mach Port ; seulement le message New Thread.

Je réalise que c'est une quasi-duplication de ce mais je n'ai pas vu de réponse fonctionnelle à cette question.

Pour référence, voici mes versions :

$ g++ --version
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin21.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

$ gdb --version
GNU gdb (GDB) 10.2

2voto

tjcaul Points 196

Comme d'habitude, l'attention portée aux détails était le problème. J'ai vu que g++ --version signalé clang mais je n'y ai pas assez réfléchi. J'avais supposé que GDB était le problème, pas mon compilateur. Je ne sais pas pourquoi Apple a lié g++ à clang++, car c'est assez trompeur. Ce petit oubli m'a fait passer 8 mois à écrire du C++ sur mon téléphone (vi sur un écran de 60 caractères de large n'est pas mon IDE idéal).

Ce que j'ai fait pour obtenir réel g++ :

  1. Installer gcc avec Homebrew

  2. Soft-link ( ln -s ) gcc-11 et g++-11 de /usr/local/Cellar/ a /usr/local/bin/

  3. unhash (au moins dans zsh) gcc et g++, ou encore gcc continuera à s'étendre à /usr/bin/clang

GDB fonctionne très bien maintenant.

1voto

s razu Points 141

EDIT : Il semble que je me sois trompé, il ne fonctionne toujours que sporadiquement, parfois il se bloque, parfois non. Il a juste fonctionné trois fois de suite après avoir lancé cette commande :(

J'ai eu le même problème et je me suis battu pendant des heures pour essayer d'installer gdb sur mac. J'ai trouvé ceci blog qui a dit que je n'aurais pas dû courir

sudo DevToolsSecurity -enable

ce que je n'ai jamais fait. Alors j'ai essayé et ça a marché. Une autre solution possible était d'exécuter gdb avec sudo à chaque fois, mais j'ai pensé que cette solution était meilleure. Je n'ai aucune idée de la raison pour laquelle elles ont fonctionné, mais c'est le cas. J'espère que quelqu'un d'autre trouvera cela utile.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X