2010-12-06 16 views
14

Ich kann mit gdb mitmachen, aber ich muss jedes Mal den Befehl "list" geben, wenn ich sehen will, wo ich im Quellcode bin.Wie kann GDB nach jedem Schritt eine "Liste" erstellen?

(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; 

Es wäre toll, wenn gdb automatisch den Quellcode nach jedem Schritt auflisten würde. Es wäre auch toll, wenn gdb angeben könnte, wo im Quellcode ich bin (wie bei einem "->" oder etwas). Wenn ich nur eine Codezeile gleichzeitig sehe, ist das ein bisschen klaustrophobisch.

Antwort

6

Sie können einen GDB Makro für diesen Einsatz:

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

Wenn Sie einen Pfeil, der auf der aktuellen Zeile wollen, könnten Sie stattdessen (z M-x gdb in Emacs) ein GDB Front-End verwenden.

2

hook-stop

define hook-stop 
    l 
end 

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

Zusätzlich wird ein pseudo-Befehl ‚Stopp‘ existiert. Definieren ('hook-stop') bewirkt, dass die zugeordneten Befehle jedes Mal ausgeführt werden, wenn die Ausführung in Ihrem Programm stoppt: Bevor Haltepunktbefehle ausgeführt werden, werden Anzeigen gedruckt oder der Stapelrahmen wird gedruckt.

von Learned: https://stackoverflow.com/a/8374474/895245

Markieren Sie die aktuelle Zeile

Das ist das einzige, was fehlt, den Buggy -tui Modus vollständig vollständig zu ersetzen.

Es ist derzeit nicht möglich, ohne Python Scripting: https://sourceware.org/bugzilla/show_bug.cgi?id=21044

mit Python-Skripten verwende ich zur Zeit: https://github.com/cyrus-and/gdb-dashboard

Siehe auch: How to highlight and color gdb output during interactive debugging?

Verwandte Themen