Как войти в консоль в Visual Studio C ++ - PullRequest
12 голосов
/ 03 мая 2009

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

Спасибо!

Ответы [ 7 ]

11 голосов
/ 03 мая 2009

Используйте функцию OutputDebugString из Windows API. Вы можете звонить в любое время, например, например. каждый сотый цикл в вашем коде.

Информация о функции здесь

Пожалуйста, прочтите все комментарии на этой странице - некоторые люди утверждают, что в вашей IDE (VS2008) выходные данные этой функции отображаются в «Немедленном окне», а не «Вывод».

2 голосов
/ 03 мая 2009

вы можете использовать простой вывод на консоль.

скажем, что вы хотите отобразить целое число, вы можете просто использовать printf , например:

printf("the number is %d \n", vectorArray.at(place) );
2 голосов
/ 03 мая 2009

Вы можете установить условные контрольные точки, то есть контрольные точки, которые достигают определенной позиции, только когда данное выражение истинно. Например, вы можете установить точку останова, которая срабатывает только каждый раз в цикле.

1 голос
/ 03 мая 2009

Вы также можете установить точку останова внутри фрагмента условного кода, например ::

if(keyPressed('S'))
{
  int a = 42; // <-- set breakpoint here
}

pro по сравнению с условной точкой останова состоит в том, что условие может быть немного более сложным, con состоит в том, что каждый раз, когда вам нужно изменить условие, вам нужно скомпилировать и связать ваше приложение.

1 голос
/ 03 мая 2009

Наряду с условными точками останова, вы также можете сделать так, чтобы точка останова записывала векторные значения в консоль и не остановилась.

Щелкните правой кнопкой мыши по точке останова и выберите «При нажатии», нажмите «напечатать сообщение», а затем добавьте свои значения в сообщение в фигурных скобках. Используйте «Счетчик совпадений», чтобы точка останова выполнялась после стольких циклов. Опция «Условие» также полезна для установки точки останова в зависимости от определенного значения в ваших переменных.

1 голос
/ 03 мая 2009

Настройка прошедшего таймера и чего-то чрезвычайно простого.

если время истекло> 3 секунды: достигает вашей точки разрыва, проверьте ваш вектор

Или, если вы хотите остановиться на очень конкретной точке, просто отметьте счетчик, чтобы отслеживать, сколько кадров вы сделали.

0 голосов
/ 04 мая 2009

я обнаружил, что если вы включите и используете fprintf (stdout, "")

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

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