Не может отлаживать небольшую программу на 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, потому что выходной поток не сбрасывается.
Ответ 3
Попробуйте посмотреть http://www.cprogramming.com/gdbtutorial.html и посмотреть, поможет ли это. Как вы можете нажать CTRL-C, чтобы сломаться?
Также Невозможно ввести ввод с помощью gdb. Help! может быть указателем, хотя он связан с яблоком.