1
votes

la sortie gdb démarre les threads mais donne en sortie

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.


4 commentaires

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?


3 Réponses :


-1
votes

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 il est bloqué, corrigez le bogue.


1 commentaires

Control-C n'interrompt pas le programme pour une raison quelconque.



0
votes

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 *

  1. echo "set startup-with-shell off" >> ~/.gdbinit
  2. Assurez-vous que votre * s gdb est codé, Darwin l'exige.
  3. Compiler le code avec l'option -g
  4. Exécutez votre gdb
  5. Charger les symboles par file "your app name"
  6. Définissez un point d'arrêt, par exemple, sur main en exécutant b main
  7. Exécutez votre programme en exécutant run dans gdb.
  8. Bon débogage.

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)


0 commentaires

0
votes

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 -

  1. Démarrez le gdb avec le fichier objet gdb <executable for example a.out>
  2. Cela invoquera l'invite gdb. Ensuite, définissez le point d'arrêt sur l'invite gdb b <function name for example b main>
  3. Puis 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.


0 commentaires