GDB не может найти границы текущей функции - PullRequest
0 голосов
/ 18 мая 2018

Я занимаюсь разработкой программы OpenGL с использованием Mingw32 в Windows 10 (64-разрядная версия)

Программа работает без проблем

Но когда я отлаживаю свою программу с помощью GDB, она показывает:

(gdb) n

0x6a7706f8 in ??() из C: \ Windows \ System32 \ DriverStore \ FileRepository \ c0310483.inf_amd64_ab6d2afa5c543409 \ atioglxx.dll

(gdb) n

Не удается найти границы текущей функции (gdb)

Вот код, который я хочу отладить

int main() {
GLFWwindow * window = initGLContext();
initImGui(window);

int points[8] = { 0 };

GLuint VAO, VBO;
glGenVertexArrays(1, &VAO); // I set breakpoint here
glGenBuffers(1, &VBO);

GLShader curveShader("", "", "");

while (!glfwWindowShouldClose(window)) {
    glfwPollEvents();
    useGUI(points);
    render();
    glfwSwapBuffers(window);
}

ImGui_ImplGlfwGL3_Shutdown();
ImGui::DestroyContext();
glfwTerminate();

return 0;
}

пожалуйста, дайте мне знать, если вам нужна дополнительная информация

Заранее спасибо

Отредактировано:

Оказывается, что моей программе не хватает отладочной информации для glGenVertexArrays (), которая предлагается atioglxx.dll, поэтому я решил использовать printf () вместо

1 Ответ

0 голосов
/ 18 мая 2018

Но когда я отлаживаю свою программу с помощью gdb, она показывает:

(gdb) n
0x6a7706f8 in ?? () from C:\Windows\System32\DriverStore...

Это происходит потому, что вы остановились внутриatioglxx.dll, который не имеет отладочной информации (или даже таблицы символов).

При отладке вам необходимо знать ваш текущий контекст (например, в какой функции я остановился).

Когда вы находитесь в своем собственном коде и предполагаете, что скомпилировали его с отладочной информацией, вы можете выполнять next, step, info locals и т. Д. Но когда вы находитесь в чужом коде (например, в предоставляемой системой DLL)эти команды не будут работать (не ожидается).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...