J'ai du code qui sépare les défauts après avoir donné quelques lignes de sortie. Mais quand j'exécute le code sur gdb comme ceci:
(gdb) r < err.in
Je reçois ce qui suit
Starting program: /Users/prikshetsharma/Downloads/parser/parse < err.in [New Thread 0x1003 of process 39841] [New Thread 0x1103 of process 39841] [New Thread 0x1503 of process 39841] warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/bsd.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/darwin_vers.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/dirstat.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/dirstat_collection.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/err.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/exception.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/init.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/mach.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/stdio.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/stdlib.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/string.o': can't open to read symbols: No such file or directory. warning: `/BuildRoot/Library/Caches/com.apple.xbs/Binaries/Libc_darwin/install/TempContent/Objects/Libc.build/libsystem_darwin.dylib.build/Objects-normal/x86_64/variant.o': can't open to read symbols: No such file or directory.
Et gdb reste bloqué ici. Et il ne donne pas le résultat qu'il donne en l'exécutant régulièrement. Comment régler ceci?
-- Éditer --
Une chose intéressante se passe. Parfois, gdb donne la sortie et parfois non, même si je ne change rien. Quand il donne une sortie, il fait ce qui suit:
Starting program: /Users/prikshetsharma/Downloads/parser/parse < err.in [New Thread 0xf03 of process 39241] [New Thread 0xc03 of process 39241]
suivi de la sortie régulière du programme. C'est étrange.
3 Réponses :
Et gdb reste bloqué ici.
Cause la plus probable: votre programme a un bogue (nous le savons déjà, car il plante), et des blocages lors de l'exécution sous GDB (pas inattendu: GDB peut affecter le timing des threads).
Comment régler ceci?
Utilisez Control-C pour interrompre votre programme, découvrez où il est bloqué, corrigez le bogue.
Control-C
n'interrompt pas le programme pour une raison quelconque.
Vraiment, je n'ai aucune idée de ce qui pourrait être ici can't open to read symbols: No such file or directory.
On dirait que ce sont des objectifs par défaut et, peut-être, reconstruire et relier les sources de Your pourrait aider.
Mais j'ai trouvé une sorte de solution de contournement pour tromper cette chose collée sur New Thread
.
* 0-2 est une préparation de base à partir de zéro *
echo "set startup-with-shell off" >> ~/.gdbinit
-g
file "your app name"
main
en exécutant b main
run
dans gdb.Lien pour la signature de code: https://superuser.com/questions/1436370/how-to-codesign-gdb-on-os-x-mojave
Remarque:
My gdb is updated to the `9.1_1` version and codesigned. MacOS version: Catalina(10.15.4)
Ce problème se produit généralement lorsque gdb ne peut pas ouvrir le fichier objet pour exécuter le programme. Une façon de résoudre ce problème -
gdb <executable for example a.out>
b <function name for example b main>
run <executable for example run a.out>
Cela devrait démarrer gdb en exécutant le programme en mode débogage et on peut parcourir et utiliser gdb si nécessaire.
question idiote, a-t-il été compilé avec -g? aussi, il peut s'agir (attendez) d'un débordement de pile ou d'une violation de la pile d'appels avant d'entrer dans main (), cela peut provoquer l'échec de la trace arrière.
appuyez sur ctrl-c et vérifiez avec
bt
ce que fait le programme.Nous aurions besoin d'un exemple de reproduction minimal à dire, ainsi que peut-être plus de sortie. Il n'y a pas assez d'informations dans la réponse donnée pour le dire.
J'ai un type de problème similaire dans Visual Studio sur Mac OX. Gdb écrit «[New Thread 0xf03 of process 4485]» puis reste bloqué là-bas. Si je le relance plusieurs fois, cela commence à fonctionner. Pouvez-vous résoudre ce problème?