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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
DKOI
 Аватар для DKOI
24 / 24 / 1
Регистрация: 08.09.2010
Сообщений: 136
10.09.2011, 13:21     Eclipse +GDB: проблемы с отладкой #1
В коде в начале идет инициализация переменных, а потом считывание строки:
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: проблемы с отладкой
Посмотрите здесь:

вопрос по gdb (пытаюсь отловить segmentation fault) C++
C++ Проблемы с cin::getline в Eclipse-CDT
eclipse C++
C++ запуск программы в gdb - debugger
C++ GDB 7.5
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TheAthlete
 Аватар для TheAthlete
151 / 151 / 12
Регистрация: 31.08.2010
Сообщений: 529
10.09.2011, 13:37     Eclipse +GDB: проблемы с отладкой #2
Привет! Она ничего и не будет выводить, т.к. ожидает ввода пользователя, в данном случае строки, и только потом сбрасывает буфер. Почитай про буферы ввода/вывода и манипуляторы endl, flush и другие в стандартной библиотеке ввода-вывода.

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

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

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

Более подробно можешь почитать в книге "Язык программирования С++. Вводный курс. Стенли Б. Липпман, Жози Лажойе, Барбара Му" Глава 8. Библиотека ввода-вывода
DKOI
 Аватар для 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
 Аватар для TheAthlete
151 / 151 / 12
Регистрация: 31.08.2010
Сообщений: 529
10.09.2011, 14:06     Eclipse +GDB: проблемы с отладкой #4
я с gdb не работал, но могу сказать, что вероятно все отладчики так работают, т.е. им же надо как-то давать данные. А так программа работает в реальном времени, то и ввод данных тоже в реальном времени, т.е. ввели данные и отладка пошла дальше.

Вероятно можно в самом отладчике до этой точки задать нужно значение. Я одно время работал с OllyDbg немного
DKOI
 Аватар для 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: проблемы с отладкой
Ответ Создать тему
Опции темы

Текущее время: 11:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru