Невозможно ввести ввод с помощью GDB. Помогите! - PullRequest
3 голосов
/ 15 апреля 2010

Мне было сложно вводить данные с помощью GDB с использованием XCode или Eclipse. Каждый раз, когда отладчик нажимает std::cin, он выглядит как ожидающий ввода, но не принимает его. Я искал интернет для получения дополнительной информации, но у меня проблемы с поиском чего-либо.

Что мне нужно сделать, чтобы cin работал с GDB? Для справки я использую XCode 3.2.2 и Eclipse Galileo.

Спасибо!

-Карлос Нуньес

Ответы [ 2 ]

1 голос
/ 02 мая 2010

Я предполагаю, что в GCC есть ошибка, связанная с использованием std :: cin и установкой / снятием точек останова.Я сделал минимальный пример:

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
    string option = "x";
    while (option != "q")
    {
        cout << endl 
        << "0 = Stop" << endl
        << "1 = Play" << endl
        << "q = Quit" << endl;

        getline(cin, option);
        cout << "You choosed " << option << endl;
    }
}   

Этот код прекрасно работает, пока вы не установите или не активируете точку останова (по крайней мере, с помощью оболочки XCode).С тех пор буфер stdin разрушается, и каждый getline () извлекает последний ввод, даже если вы не вводите ключ, вводя бесконечный цикл.

Я не знаю, как его обойти ...: - (

0 голосов
/ 15 апреля 2010

Программирование на C ++ с использованием XCode иногда может быть болезненным. Попробуйте включить ваш исходный код, чтобы мы могли видеть, что не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...