2010-12-06 4 views
14

Я могу согласиться с gdb, но мне нужно дать команду «list» каждый раз, когда я хочу увидеть, где я нахожусь в исходном коде.Как заставить GDB делать «список» после каждого шага?

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

Было бы здорово, если бы gdb автоматически перечислил исходный код после каждого шага. Было бы замечательно, если бы gdb мог указать, где в исходном коде я (например, с «->» или что-то еще). Видя только одну строку кода за раз, я немного клаустрофобию.

ответ

6

Вы можете использовать макрос GDB для этого:

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

Если вы хотите стрелку, указывающую на текущей строке, вы можете рассмотреть возможность использования GDB передний конец вместо этого (например, M-x gdb в Emacs).

2

hook-stop

define hook-stop 
    l 
end 

Док: https://sourceware.org/gdb/current/onlinedocs/gdb/Hooks.html

Кроме того, псевдо-команды, «стоп» существует. Определение («hook-stop») приводит к тому, что связанные команды выполняются каждый раз, когда выполнение останавливается в вашей программе: до того, как будут выполняться команды точки останова, будут распечатываться распечатки или распечатываться кадр стека.

Извлеченные из: https://stackoverflow.com/a/8374474/895245

Выделите ток линии

Это единственное, чего не хватает, чтобы полностью заменить полностью режим багги -tui.

В настоящее время не представляется возможным без Python сценариев: https://sourceware.org/bugzilla/show_bug.cgi?id=21044

с помощью сценариев Python, я в настоящее время с помощью: https://github.com/cyrus-and/gdb-dashboard

Смотрите также: How to highlight and color gdb output during interactive debugging?

Смежные вопросы