Kodda yer alan işlevlerin tam olarak ne zaman verildiğini anlamak için F11 anahtarında (Step Into modu) verilen bir C++ koduyla hata ayıklanıyordum ve 'un hiçbir zaman bir işlev girmediğini fark ettim. işlev tanımının içinde bir satırda bir kesme noktası ayarlayın.Neden Visual Studio'nun Debug modu Step Into (F11) bazen bazı işlevlerin içine girmiyor?
Ben ana yönteminden bir işlev çağırırsanız, ortalama ve fonksiyon ben F11 ayıklama modu değişkeni analiz amacıyla işlev içinde adım adım girmek için bekliyoruz başka .cpp tanımlanır değişir. Çoğu zaman bunu yapar, ancak bazı durumlarda bu fonksiyonu devreye girmeden yürütür ve ana yöntemdeki bir sonraki satıra atlar.
Bu neden oluyor?
Örnek: Bu fonksiyon F11 adım asla değildir
:
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
}
Bu F11 adım adım giden ana yöntemdir:
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
}
İşaretlenmemiştim, ancak yine de teşekkürler. Demek istediğim, F11'in "glutMainLoop()" satırına gelmesi de işlev ekranına adım atmasını beklediğimi, ancak yalnızca ekranın içinde bir boşluk bıraktığımda (void) bunu beklememdir. –