2010-12-06 33 views
14

Je peux marcher avec gdb, mais je dois donner la commande "list" chaque fois que je veux voir où je suis dans le code source.Comment obtenir que GDB fasse une 'liste' après chaque étape?

(gdb) next 
351  int right = get_variable(right_token, right_id); 
(gdb) list 
346   op = "<>"; 
347   right_id = parse_id_or_crash(); 
348  } 
349  Token * right_token = tokens[parser_index - 1]; 
350  int left = get_variable(left_token, left_id); 
351  int right = get_variable(right_token, right_id); 
352  if (op == "<") 
353   return left < right; 
354  if (op == ">") 
355   return left > right; 

Ce serait génial si gdb listerait automatiquement le code source après chaque étape. Ce serait aussi génial si gdb pouvait indiquer où je suis dans le code source (comme avec un "->" ou quelque chose comme ça). Voir une seule ligne de code à la fois me rend un peu claustrophobe.

Répondre

6

Vous pouvez utiliser une macro GDB pour cela:

(gdb) def n 
Type commands for definition of "n". 
End with a line saying just "end". 
>next 
>list 
>end 

Si vous voulez une flèche pointant sur la ligne actuelle, vous pouvez envisager d'utiliser un GDB frontal à la place (par exemple M-x gdb dans Emacs).

2

hook-stop

define hook-stop 
    l 
end 

Doc: https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html

En outre, une pseudo-commande, « stop » existe. Définir ('hook-stop') fait exécuter les commandes associées chaque fois que l'exécution s'arrête dans votre programme: avant que les commandes de point d'arrêt ne soient exécutées, les affichages sont imprimés ou le cadre de la pile est imprimé.

tirées de: https://stackoverflow.com/a/8374474/895245

Sélectionnez la ligne actuelle

Ceci est la seule chose qui manque à remplacer complètement le mode poussette -tui complètement.

Il est actuellement impossible sans script Python: https://sourceware.org/bugzilla/show_bug.cgi?id=21044

Avec les scripts Python, je suis actuellement en utilisant: https://github.com/cyrus-and/gdb-dashboard

Voir aussi: How to highlight and color gdb output during interactive debugging?