Как использовать отладчик MinGW GDB для отладки программы C ++ в Windows? - PullRequest
28 голосов
/ 12 января 2011

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

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

int main()
{
    int temp = 0;

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

    return 0;
}

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

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

Ответы [ 2 ]

41 голосов
/ 12 января 2011

Первым шагом является компиляция вашей программы с -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 Это эквивалентно «шагу в».
  • next или adv +1 Переход к следующей строке (например, «шаг за шагом»).Вы также можете перейти к определенной строке определенного файла, например, adv mycode.cpp:8.
  • bt Печать обратной трассировки.По сути, это трассировка стека.
  • continue Точно так же, как операция «продолжить» визуального отладчика.Это заставляет выполнение программы продолжаться до следующей точки останова или до выхода из программы.

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

5 голосов
/ 12 января 2011

В этом вопросе есть несколько графических объектов gdb для окон версия windows интерфейса GDB DDD

Хотя DDD не был портирован

...