Почему отладочный режим Step Into (F11) Visual Studio иногда не заходит внутрь некоторых функций?

Я отлаживал данный C++ код с помощью клавиши F11 (режим Step Into), чтобы понять точный порядок вызова функций в коде, и понял, что он никогда не войдет внутрь некоторых функций, если я не установлю точку останова на какой-то строке внутри определения функции.

То есть, если я вызываю функцию из метода main, а функция определена в другом .cpp, я ожидаю, что режим отладки F11 будет пошагово входить внутрь функции, чтобы проанализировать изменения переменных. В большинстве случаев так и происходит, но в некоторых случаях он просто выполняет функцию, не заходя в нее, и переходит к следующей строке в методе main.

Почему это происходит?

Пример:

Это функция, в которую F11 никогда не заходит:

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
}

Это основной метод, в котором F11 делает шаг за шагом:

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   
}
10
задан Supun Wijerathne 12 October 2016 в 09:46
поделиться