Stavo eseguendo il debug di un determinato codice C++ con il tasto F11 (modalità Step Into) per capire l'ordine preciso in cui sono state richiamate le funzioni nel codice e ho realizzato che non entrerebbe mai in alcune funzioni a meno che non impostare un punto di interruzione su una riga all'interno della definizione della funzione.Perché la modalità di debug di Visual Studio Step Into (F11) a volte non entra in alcune funzioni?
Cioè, se chiamo una funzione dal metodo principale, e la funzione definita in un altro Cpp mi aspetto la modalità F11 debug per immettere passo passo all'interno della funzione per analizzare la variabile i cambiamenti. La maggior parte delle volte lo fa, ma in alcuni casi esegue semplicemente la funzione senza passarci sopra e salta alla riga successiva nel metodo principale.
Perché sta succedendo?
Esempio:
Questa è la funzione F11 avrebbe mai entrare:
void VirtualCamera::display (void) {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Clear the background of the window
glClear(GL_COLOR_BUFFER_BIT); //Clear the colour buffer (more buffers later on)
glLoadIdentity(); // Load the Identity Matrix to reset our drawing locations
glTranslatef(0.0f, 0.0f, -5.0f);
renderPrimitive(); // Render the primitive
glFlush(); // Flush the OpenGL buffers to the window
}
Questo è il metodo principale dove F11 va di pari passo:
void VirtualCamera::CameraMain(int argc, char **argv){
glutInit(&argc, argv); // Initialize GLUT
glutInitDisplayMode (GLUT_SINGLE);
glutInitWindowSize (500, 500); // Set the width and height of the window
glutInitWindowPosition (100, 100); // Set the position of the window
glutCreateWindow ("OpenGL Window"); // Set the title for the window
glutDisplayFunc(display); // Tell GLUT to use the method "display" for rendering
glutReshapeFunc(reshape);
glutMainLoop(); // Enter GLUT's main loop
}
Sono stato deselezionato, ma grazie comunque. Quello che intendo è che mi aspettavo che quando F11 arriva alla riga 'glutMainLoop()' passi anche alla visualizzazione della funzione, ma lo fa solo se imposto un breakpoint all'interno del display (void). –