2009-05-03 7 views
12

Estoy trabajando en un pequeño C++ - Juego en Visual Studio 2008. Quiero ver el contenido de un vector después de un par de segundos o después de presionar algunos botones. Los puntos de interrupción son inútiles en este caso, ya que me detienen en cada llamada de Gameloop (~ 60 veces por segundo). ¿Cómo debo depurar en este caso?Cómo registrar cosas en la consola en Visual Studio C++

Gracias!

Respuesta

11

Use la función OutputDebugString desde la API de Windows. Puede llamarlo cuando lo desee, p. cada 100 ° ciclo en tu código.

información de función es here

Lea todos los comentarios en esta página - algunas personas afirman que en su IDE (VS2008) de salida de esta función se muestra en la "ventana Inmediato" no es la "salida".

+1

No se olvide \ r \ n para el final de la línea. – Zuuum

+0

Toda la documentación que he leído hasta ahora dice que la salida "Imprimir un mensaje" va a la ventana de Salida.Gracias a su comentario, pude profundizar en el icono y menú desordenado (Depurar-> Windows-> Inmediato) y encontrar una ventana "Inmediata" para mostrar. Todos mis mensajes de punto de referencia son repentinamente visibles !! Muchas gracias. –

2

Puede establecer puntos de interrupción condicional, es decir, puntos de interrupción que alcanzan cierta posición solo cuando una expresión determinada es verdadera. Puede, por ejemplo, establecer un punto de interrupción que golpee cada enésima vez en un bucle.

2

puede usar una salida simple para la consola.

que usted quiere mostrar un entero, puede simplemente usar printf por ejemplo:

printf("the number is %d \n", vectorArray.at(place)); 
+2

Esto no se mostrará a menos que A) el la aplicación está vinculada como una aplicación de consola o B) ha abierto una consola en su aplicación y redirigido stdout a ella. –

1

instalación de un contador de tiempo transcurrido y algo muy básico.

si ElapsedTime> 3 segundos: éxitos su punto de ruptura, echa un vistazo a su vector

O si desea detener en un punto muy concreto, simplemente marcar un contador para realizar un seguimiento de la cantidad de cuadros que has hecho.

1

Junto con los puntos de interrupción condicional también puede hacer que el punto de interrupción escriba los valores de vector en la consola y no detenerse.

Haga clic con el botón derecho en su punto de interrupción y seleccione "Al presionar", haga clic en "imprimir un mensaje" y luego agregue sus valores al mensaje con llaves. Use el "Conteo de aciertos" para que el punto de interrupción se ejecute después de tantos ciclos. La opción "Condición" también es útil para establecer el punto de corte dependiendo de un cierto valor en sus variables.

1

También puede establecer el punto de interrupción dentro de una pieza de código condicional, por ejemplo:

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

El pro vs un punto de interrupción condicional es que la condición puede ser un poco más complejo, el con es que cada vez que necesite cambiar la condición, necesita compilar y vincular su aplicación.

0

me enteré de que si se incluye el uso y fprintf (stdout, "")

devuelve un símbolo del sistema en la pantalla mientras el programa todavía se está ejecutando

Cuestiones relacionadas