Tôi đã gỡ lỗi mã C++ đã cho bằng phím F11 (Chế độ bước vào) để hiểu thứ tự chính xác trong đó các hàm trong mã được gọi và tôi nhận ra rằng nó sẽ không bao giờ nhập vào một số chức năng trừ khi tôi thiết lập một breakpoint tại một số dòng bên trong định nghĩa hàm.Tại sao chế độ gỡ lỗi của Visual Studio Bước vào (F11) đôi khi không nhập vào bên trong một số chức năng?
Ý tôi là, nếu tôi gọi một hàm từ phương pháp chính, và các chức năng được định nghĩa trong một cpp Tôi hy vọng chế độ F11 gỡ lỗi để nhập từng bước bên trong hàm để analize biến thay đổi. Hầu hết thời gian, nhưng trong một số trường hợp, nó chỉ thực hiện chức năng mà không cần bước vào nó, và nhảy đến dòng tiếp theo trong phương thức chính.
Tại sao điều này lại xảy ra?
Ví dụ:
Đây là chức năng F11 sẽ không bao giờ bước vào:
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
}
Đây là phương pháp chính mà F11 đi từng bước:
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
}
Tôi đã bỏ chọn, nhưng dù sao cũng được. Ý tôi là tôi mong rằng khi F11 vào dòng 'glutMainLoop()' cũng bước vào màn hình hiển thị chức năng, nhưng nó chỉ xảy ra nếu tôi đặt một điểm ngắt bên trong màn hình (void). –