Как записывать материал в консоли в Visual Studio С++
Я работаю над маленькой С++ - игрой в Visual Studio 2008. Я хочу увидеть содержимое вектора через пару секунд или после нажатия нескольких кнопок. Точки останова бесполезны в этом случае, потому что они останавливают меня при каждом вызове gameloop (~ 60 раз в секунду). Как мне отлаживать в этом случае?
Спасибо!
Ответы
Ответ 1
Использовать функцию OutputDebugString из Windows API. Вы можете позвонить ему в любое время, например, каждый 100-й цикл в вашем коде.
Информация о функции здесь
Прочитайте все комментарии на этой странице - некоторые утверждают, что в вашей IDE (VS2008) вывод этой функции отображается в "Immediate Window", а не "Output".
Ответ 2
Вы можете установить контрольные точки условные, т.е. точки останова, которые попадают в определенную позицию только тогда, когда данное выражение истинно. Например, вы можете установить точку останова, которая попадает только каждый n-й раз в цикле.
Ответ 3
вы можете использовать простой вывод на консоль.
скажем, что вы хотите отобразить целое число, вы можете просто использовать printf, например:
printf("the number is %d \n", vectorArray.at(place) );
Ответ 4
Установите истекший таймер и что-то очень простое.
если elapsedTime > 3 секунды: попадает в точку разрыва, проверьте свой вектор
Или если вы хотите остановиться в очень конкретной точке, просто отметьте счетчик, чтобы отслеживать, сколько кадров вы сделали.
Ответ 5
Наряду с условными точками останова вы также можете использовать контрольную точку для записи векторных значений на консоль и не останавливаться.
Щелкните правой кнопкой мыши на точке останова и выберите "When Hit", нажмите "распечатать сообщение", а затем добавьте свои значения в сообщение в фигурных скобках. Используйте "Hit Count", чтобы выполнить контрольную точку после стольких циклов. Опция "Условие" также полезна для установки точки останова в зависимости от определенного значения в ваших переменных.
Ответ 6
Вы также можете установить свою точку останова в куске условного кода, например:
if(keyPressed('S'))
{
int a = 42; // <-- set breakpoint here
}
Про или условная точка останова заключается в том, что условие может быть немного сложнее, поскольку каждый раз, когда вам нужно изменить условие, вам нужно скомпилировать и связать ваше приложение.
Ответ 7
я узнал, что если вы включаете и используете fprintf (stdout, "")
он возвращает командную строку на экране, пока ваша программа все еще работает