Вопрос или проблема
Мне нравится просматривать исходный код с помощью “lay src”, но проблема в том, что я использую несколько файлов, и он почти всегда показывает не главный файл. Например, у меня есть файл connec.cpp
и файл main.cpp
; когда я выполняю lay src
, dgb показывает connec.cpp
, что, в общем-то, неважно, но как мне изменить это, чтобы отобразить main.cpp
в разбивке источника? Я знаю, что могу установить точки останова в других файлах, используя b file.cpp:x
, однако это не изменяет отображаемый файл. Я не нашел много информации о tui для gdb, а команда help
не оказала особой помощи.
Спасибо заранее.
Ответ или решение
Для решения вашей проблемы с отображением исходного кода в GDB, когда вы используете команду lay src
, необходимо немного разобраться с TUI (Text User Interface) режимом отладки.
Когда вы используете lay src
, GDB отображает файл исходного кода, который соответствует текущей точке останова (breakpoint) или текущей инструкции, на которую указывает ваша программа. Если вы хотите переключиться на другой файл исходного кода, вам нужно использовать команду list
, которая позволяет вам выбирать и отображать код из нужного файла.
Вот пошаговая инструкция, как это сделать:
-
Установите точку останова (breakpoint) в нужном файле, если вы еще этого не сделали. Например, для файла
main.cpp
:(gdb) b main.cpp:номер_строки
-
Запустите программу до точки останова:
(gdb) run
-
После того как программа остановится на указанной точке останова, можно использовать команду
layout src
для открытия источника в TUI:(gdb) layout src
-
Если вы хотите вручную переключиться на другой файл после установки точки остановки, используйте команду
list
, чтобы указать, какой файл хотите просмотреть:(gdb) list main.cpp
Это выведет исходный код из
main.cpp
в области вывода, даже если в данный момент вы находитесь в другом файле. -
Если вы хотите продолжить работу с TUI и просматривать нужные файлы без задержек, вы можете использовать:
(gdb) list
Эта команда отобразит следующий блок строк в текущем файле.
Для более удобного переключения между файлами, вы можете также использовать экраны — можно разделить отображение и видеть несколько файлов одновременно. Используйте команду:
(gdb) layout split
Это создаст два экрана, и вы можете переключаться между ними.
Если вы часто работаете с несколькими файлами, можно настроить макросы или использовать скрипты GDB для упрощения процесса.
В итоге, переключение между файлами в GDB происходит через установку точек останова и использование команд list
и layout
, которые позволяют вам видеть необходимый исходный код, что значительно упростит процесс отладки вашего приложения.