Как использовать отладчик ggb MinGW для отладки программы на С++ в Windows?

Я искал документацию по этому поводу и ничего не нашел. У меня установлен MinGW, и он отлично работает. Я просто не знаю, как использовать отладчик.

Учитывая некоторый простой код, скажем в файле под названием "mycode.cpp":

int main()
{
    int temp = 0;

    for (int i = 0; i < 5; ++i)
        temp += i;

    return 0;
}

... как бы отладить это. Какие команды я использую для отладки кода с помощью MinGW и GDB в окнах? Могу ли я выполнить код через командную строку, как в Visual Studio? Если да, то какие команды я использую для этого?

Есть ли у вас учебники по использованию GDB? Я не мог найти никого, но если бы кто-нибудь мог направить меня к тому, что было бы здорово. Я устал писать множество операторов std::cout для отладки сложного кода.

Ответ 1

Первым шагом является компиляция вашей программы с помощью -g для включения информации об отладке в исполняемый файл:

g++ -g -o myprog.exe mycode.cpp

Затем программу можно загрузить в gdb:

gdb myprog.exe

Несколько команд для запуска:

  • break main приведет к прерыванию отладки при вызове main. Вы также можете разбить строки кода с помощью break FILENAME:LINENO. Например, break mycode.cpp:4 прерывает выполнение всякий раз, когда программа достигает строки 4 из mycode.cpp.
  • start запускает программу. В вашем случае вам нужно установить контрольные точки перед запуском программы, потому что она быстро завершается.

В точке останова:

  • print VARNAME. Это то, как вы печатаете значения переменных, будь то локальные, статические или глобальные. Например, в цикле for вы можете ввести print temp, чтобы распечатать значение переменной temp.
  • step Это эквивалентно "step into".
  • next или adv +1 Перейдите к следующей строке (например, "step over" ). Вы также можете перейти к определенной строке определенного файла, например, adv mycode.cpp:8.
  • bt Распечатайте обратную линию. Это трассировка стека, по существу.
  • continue Точно как операция "продолжить" визуального отладчика. Это приводит к продолжению выполнения программы до следующей точки прерывания или выхода программы.

Лучше всего прочитать руководство пользователя GDB.