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

ал документацию по этому вопросу и ничего не нашел. У меня установлен 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)

Решение Вопроса

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

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

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

gdb myprog.exe

Несколько команд для начала:

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

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

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

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

 Daniel Trebbien12 мар. 2017 г., 22:51
@ Mahesha999 Спасибо за эти подробности. Я предполагаю, что, поскольку ваш компилятор 64-битный, он генерирует 64-битные двоичные файлы (если у вас нет кросс-компилятора). Вы можете попробовать скомпилировать вашу программу, используя-m32 Опция компилятора GCC. Что касается проверки, является ли exe 32-битным или 64-битным, здесь перечислено много методов:superuser.com/q/358434/40712 Лично я открываю двоичный файл в 32-битной и 64-битной сборкахЗависимость Уокер (один из ответов обсуждает эту технику).
 Mike Webb12 янв. 2011 г., 19:17
Благодарю. Именно то, что мне было нужно.
 Daniel Trebbien11 мар. 2017 г., 13:23
@ Mahesha999 Другие файлы не генерируются; Отладочная информация хранится в исполняемом файле. Можете ли вы попробовать запуститьa.exe напрямую? «не в исполняемом формате: формат файла не распознан» подразумевает, чтоa.exe не является исполняемым файлом
 Thomas Matthews12 янв. 2011 г., 18:44
Еще несколько команд, с которыми вы должны быть знакомы:run, continue, next, list а такжеhelp, Когда ничего не помогает, попробуйте использоватьhelp.
 Mahesha99910 мар. 2017 г., 12:27
пыталсяg++ -g helloworld.c, он сгенерировал только a.exe. Предполагается ли создать еще несколько файлов для отладки с помощью GDB. Бегgdb a.exe дает сообщение:not in executable format: File format not recognized и начинается(gdb) командная строка Бег(gdb) break main даетNo symbol table is loaded. Use the "file" command., Бег(gdb) start дает то же самоеNo symbol table is loaded. Use the "file" command., Что я не так делаю?

Windows-версия интерфейса GDB DDD

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

Ваш ответ на вопрос