Не может отлаживать небольшую программу на eclipse helios cdt, используя mingw/gdb под окнами, консоль зависает

Я пытаюсь использовать Eclipse CDT для создания некоторых примеров на С++, я могу просто запустить их с помощью команды run, но всякий раз, когда я пытаюсь отлаживать, консольное окно зависает, я могу ввести, но программа не продолжается.

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

Hello, world
put your name: 15^running

Кнопка продолжения отключена и ничего не делает, когда я что-то ввожу и нажимаю enter. 15 - случайное число, иногда его 16, 20 и т.д.

Если я запускаю программу под eclipse, я получаю приглашение ввода просто:

Hello, world
put your name: test
Hello test

это код, который я пытаюсь отлаживать:

#include <iostream>
#include <string>

int main() {
    std::cout << "Hello, world" << std::endl;
    std::string name;
    std::cout << "put your name: ";
    std::cin >> name;
    std::cout << "Hello " + name << std::endl;
    return 0;
}

Мой путь var:
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\Program Files\Java\jdk1.6.0_14\bin;C:\MinGW\bin

Версия Eclipse: Helios Service Release 2
Версия CDT: 7.0.2
ОС: windows xp
Версия GDB: GNU gdb (GDB) 7.2

Как я могу отладить этот небольшой пример в CDT без проблем?

Ответы

Ответ 1

на веб-сайте Eclipse часто задают следующие вопросы:

http://wiki.eclipse.org/CDT/User/FAQ#Eclipse_console_does_not_show_output_on_Windows

Консоль Eclipse не отображает вывод в Windows In Eclipse CDT on Windows, стандартный вывод программы, запускаемой или отлаженной, полностью буферизован, потому что он не подключен к консоли Windwos, а к труба. См. Ошибку 173732 для более подробной информации. Либо добавьте вызовы fflush после каждый printf или добавить следующие строки в начало основного Функция:

setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);

Похоже на ожидаемую ошибку на окнах.

Ответ 2

15^running выглядит как результат записи из gdb Machine Interface. Обычно он не должен появляться в консоли Eclipse.

Я рекомендую попробовать другой Create Process Launcher. Его можно изменить следующим образом:

  • В главном меню выберите "Выполнить" → "Конфигурации отладки...".

  • В открывшемся окне "Конфигурации отладки", показанном ниже, нажмите "Выбрать другое..." напротив "Использование GDB (DSF) Создать процесс запуска".

    enter image description here

  • В открывшемся окне "Выбрать предпочтительную пусковую установку", показанном ниже, установите флажок "Использовать настройки конфигурации", выберите "Стандартный создать процесс запуска" в списке ниже и нажмите "ОК".

    enter image description here

  • Теперь перейдите на вкладку "Отладчик" в окне "Конфигурации отладки", выберите отладчик, например. "MinGW gdb" и нажмите "Применить".

    enter image description here

При запуске Standard Create Process Launcher я могу отлаживать вашу программу, хотя "поместить ваше имя:" печатается только после того, как я что-то напечатаю и нажмите Enter, потому что выходной поток не сбрасывается.