Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
#1

Eclipse +GDB: проблемы с отладкой - C++

10.09.2011, 13:21. Просмотров 2388. Ответов 4
Метки нет (Все метки)

В коде в начале идет инициализация переменных, а потом считывание строки:
C++
1
2
cout << "Input expression to convert > ";
cin >> in_string;
Включаю режим отладки нажатием клавиши F11. Иду по шагам (step over). После прохождения строки с cout строка не выводится (и в консоли не выдается вообще ничего), а при прохождении строки с cin поток (как пишет эклипс) уходит в состояние Running:Step и больше ни на что не реагирует. После этого единственное, что можно с ним сделать - остановить. В нормальном режиме все работает без проблем. Подскажите, что я делаю не так, когда отлаживаю программу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2011, 13:21     Eclipse +GDB: проблемы с отладкой
Посмотрите здесь:
Visual c++. Проблемы с отладкой C++
C++ Проблемы с cin::getline в Eclipse-CDT
C++ GDB 7.5
Отладка GDB C++
C++ GDB обращение к памяти
C++ запуск программы в gdb - debugger
C++ ошибка программы. расшифровать gdb и valgrind
вопрос по gdb (пытаюсь отловить segmentation fault) C++
Как подцепить отладчик msys2 CodeBlock gdb C++
Исправить ошибку в WxDev-C++: Error with debugging process: GDB Error: error, No source file named main.cpp C++
eclipse C++
C++ и Eclipse C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 534
10.09.2011, 13:37     Eclipse +GDB: проблемы с отладкой #2
Привет! Она ничего и не будет выводить, т.к. ожидает ввода пользователя, в данном случае строки, и только потом сбрасывает буфер. Почитай про буферы ввода/вывода и манипуляторы endl, flush и другие в стандартной библиотеке ввода-вывода.

В твоем случае могу посоветовать использовать flush, т.е. написать вот так

cout << "Input expression to convert > " << flush;
cin >> in_string;

Манипулятор flush сбрасывает буфер потока, но никаких символов в вывод не добавляет.
При этом можно сделать одно замечание: Буфер вывода не сбрасывается, если программа завершается аварийно.

Более подробно можешь почитать в книге "Язык программирования С++. Вводный курс. Стенли Б. Липпман, Жози Лажойе, Барбара Му" Глава 8. Библиотека ввода-вывода
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
10.09.2011, 13:51  [ТС]     Eclipse +GDB: проблемы с отладкой #3
Цитата Сообщение от TheAthlete Посмотреть сообщение
Привет! Она ничего и не будет выводить, т.к. ожидает ввода пользователя, в данном случае строки, и только потом сбрасывает буфер. Почитай про буферы ввода/вывода и манипуляторы endl, flush и другие в стандартной библиотеке ввода-вывода.

В твоем случае могу посоветовать использовать flush, т.е. написать вот так

cout << "Input expression to convert > " << flush;
cin >> in_string;

Манипулятор flush сбрасывает буфер потока, но никаких символов в вывод не добавляет.
При этом можно сделать одно замечание: Буфер вывода не сбрасывается, если программа завершается аварийно.

Более подробно можешь почитать в книге "Язык программирования С++. Вводный курс. Стенли Б. Липпман, Жози Лажойе, Барбара Му" Глава 8. Библиотека ввода-вывода
Я немного не понял, что вы имеете в виду, но попробовал. В режиме отладки поток уходит в описанный в первом посте режим сразу после flush, однако строка появляется, а после неё:
*stopped,reason="end-stepping-range",frame={addr="0x0040182b",func="main",args=[],file="../src/InToPost.cpp",fullname="D:/Project/EclipseProject/InToPost/.settings/../src/InToPost.cpp",line="43"},thread-id="1",stopped-threads="all". Что это значит?

P.S.Все, разобрался, debuger хочет прямого ввода команд в консоль в данном случае, но это, мое мнение, как то неудобно. Можно ли это исправить?
TheAthlete
152 / 152 / 13
Регистрация: 31.08.2010
Сообщений: 534
10.09.2011, 14:06     Eclipse +GDB: проблемы с отладкой #4
я с gdb не работал, но могу сказать, что вероятно все отладчики так работают, т.е. им же надо как-то давать данные. А так программа работает в реальном времени, то и ввод данных тоже в реальном времени, т.е. ввели данные и отладка пошла дальше.

Вероятно можно в самом отладчике до этой точки задать нужно значение. Я одно время работал с OllyDbg немного
DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
10.09.2011, 14:28  [ТС]     Eclipse +GDB: проблемы с отладкой #5
Цитата Сообщение от TheAthlete Посмотреть сообщение
я с gdb не работал, но могу сказать, что вероятно все отладчики так работают, т.е. им же надо как-то давать данные. А так программа работает в реальном времени, то и ввод данных тоже в реальном времени, т.е. ввели данные и отладка пошла дальше.

Вероятно можно в самом отладчике до этой точки задать нужно значение. Я одно время работал с OllyDbg немного
Вы немного не поняли. Понятное дело, что он требует ввода данных в реальном времени. Но суть в том, что после команды Flush (полагаю и ещё целого ряда команд) отладчик требует чтобы его явно перевели на следующую команду (f6 - горячая клавиша IDE Eclipse для этого - не работает) командой -exec-next. Вот и интересно узнать, можно ли поставить, чтобы эта команда вводилась автоматически?
Yandex
Объявления
10.09.2011, 14:28     Eclipse +GDB: проблемы с отладкой
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru