Подтвердить что ты не робот

Как записывать материал в консоли в Visual Studio С++

Я работаю над маленькой С++ - игрой в Visual Studio 2008. Я хочу увидеть содержимое вектора через пару секунд или после нажатия нескольких кнопок. Точки останова бесполезны в этом случае, потому что они останавливают меня при каждом вызове gameloop (~ 60 раз в секунду). Как мне отлаживать в этом случае?

Спасибо!

4b9b3361

Ответ 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, "")

он возвращает командную строку на экране, пока ваша программа все еще работает