Les commandes list
impriment un ensemble de lignes, mais il me faut une seule ligne, où je suis et où une erreur s'est probablement produite.
Je reçois les mêmes informations lors du débogage. Bien que pas pendant que je vérifie le stacktrace. Très probablement, vous auriez utilisé le drapeau d'optimisation, je pense. Vérifiez ceci lien - quelque chose de connexe.
Essayez de compiler avec -g3
supprime tout indicateur d'optimisation. Alors ça pourrait marcher. HTH!
La commande "frame" vous donnera ce que vous cherchez. (Ceci peut être abrégé juste 'f'). Voici un exemple:
(gdb) frame
\#0 zmq::xsub_t::xrecv (this=0x617180, msg_=0x7ffff00008e0) at xsub.cpp:139
139 int rc = fq.recv (msg_);
(gdb)
Sans argument, 'frame' vous indique simplement où vous en êtes (avec un argument, il change le cadre). Plus d'informations sur la commande frame peuvent être trouvées ici .
Gardez à l'esprit que gdb est une commande puissante, capable d'instructions de bas niveau, liée aux concepts d'assemblage.
Ce que vous recherchez s’appelle le pointeur de instruction, c’est-à-dire:
Le registre du pointeur d’instruction pointe sur l’adresse mémoire que le processeur tentera ensuite d’exécuter. Le pointeur d’instruction est appelé ip en mode 16 bits, eip dans Mode 32 bits et rip en mode 64 bits.
plus de détail ici
tous les registres disponibles lors de l'exécution de gdb peuvent être affichés avec:
(gdb) info registers
avec lui, vous pouvez trouver quel mode votre programme est en cours d'exécution (en cherchant lequel de ces registres existe)
then (ici, en utilisant le registre le plus courant ) rip de nos jours, remplacez-le par eip ou très rarement ip si nécessaire):
(gdb)info line *$rip
va vous montrer le numéro de ligne et la source du fichier
(gdb) list *$rip
va vous montrer cette ligne avec quelques avant et après
mais probablement
(gdb) frame
devrait suffire dans de nombreux cas.
La commande où ou cadre peut être utilisée. où command donnera plus d'informations avec le nom de la fonction
Toutes les réponses ci-dessus sont correctes. Ce que je préfère, c’est d’utiliser le mode tui (ctrl + X A) qui indique votre emplacement et la fonction dans une fenêtre séparée, ce qui est très utile pour les utilisateurs. J'espère que ça aide aussi.