Подтвердить что ты не робот

Как заставить GDB делать "список" после каждого шага?

Я могу согласиться с gdb, но я должен дать команду "list" каждый раз, когда хочу увидеть, где я нахожусь в исходном коде.

(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 мог указать, где в исходном коде я (например, с "- > " или что-то еще). Видя только одну строку кода за раз, я немного клаустрофобию.

4b9b3361

Ответ 2

Для этого можно использовать макрос 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).

Ответ 3

hook-stop

define hook-stop
  l
end

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

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

Выучено из: fooobar.com/info/216810/...

Выделите текущую строку

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

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

С помощью скриптов Python я в настоящее время использую: https://github.com/cyrus-and/gdb-dashboard

mHC8f.png

Смотрите также: Как выделить и цвет gdb-вывода во время интерактивной отладки?