Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
1

JIT-отладчик или необработанные исключения

24.10.2017, 10:38. Показов 1188. Ответов 9
Метки нет (Все метки)

Писал код на c++ opengl, запускается нормально, компилится, но после закрытия окна на крестик(успешно) выскакивал jit чтобы откомпилировать исключение или что то того. Вырубил его в Сервис -> параметры -> jit в visual studio, но потом все ровно выскакивает ОШИБКА об ОШИБКЕ что он не включен. Почему даже после успешной компиляции и работы программы у меня всё равно появляется это окно, и как его убрать вообще? Порой его появление в буквальном смысле зависело от экспериментов с кодом, к примеру написал ли я window.display одной строкой ранее или же glewInit().
Понимаю что от вида кода вряд ли зависит, но зачем он нужен, серьезное что?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2017, 10:38
Ответы с готовыми решениями:

Direct3D и необработанные исключения
Direct3D начал изучать опять же - только что. И на примитивнейшем, казалось бы, примере, пишет...

Необработанные исключения в MS Visual 2010
Причиной чего может быть это сообщение и как его решить? У меня идет проверка в 3ех мерном массиве...

JIT отладчик
Visual Studio была удалена с компьютера.теперь каждую минуту вылезает данное окно как исправить...

Можно ли как-то глобально ловить необработанные исключения
Здравствуйте! Подскажите, можно ли как-то глобально ловить необработанные исключения? Работаю с...

9
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 10:55 2
Цитата Сообщение от Сергей Мишин Посмотреть сообщение
после закрытия окна на крестик(успешно) выскакивал jit чтобы откомпилировать исключение или что то того
А по подробнее? Какой код ошибки, сообщение какое выводится?
backtrace?
Скорее всего не освободились какие-то ресурсы или освобождаются с ошибкой. Это может быть и от неправильной инициализации, порядок может иметь очень большое значение. Например, нужно сначала создать окно, потом контекст OpenGL (будет выбрана нужная версия OpenGL), потом только загрузить функции OpenGL. Без этого нельзя будет использовать функции типа gl* . Это касается именно загруженного OpenGL
0
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
24.10.2017, 12:18  [ТС] 3
Объясни что такое контекст, и какие имено функции opengl нужно загрузить?(если ты про шейдеры то с ними всё ок)

Я юзаю SFML так что у меня есть цикл while(окно) и всё что вне этого цикла.
Вне цикла окна: glewInit() vbo, vao(так как много писанины) и шейдеры
Вообщем тут срр файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <GL/glew.h>
#include <glm/glm.hpp>
#include <SFML/Graphics.hpp>
#include<SFML/OpenGL.hpp>
#include "AdoptedFunc.h"
 
using namespace sf;
 
 
 
const GLchar* vs = "#version 330 core\n"
    "layout (location = 0) in vec3 position;\n"
    "void main()\n"
    "{\n"
    "gl_Position = vec4(position.x, position.y, position.z, 1.0);\n"
    "}\0";
 
const GLchar* fs = "#version 330 core\n"
    "out vec4 color;\n"
    "void main()\n"
    "{\n"
    "color = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n"
    "}\n\0";
 
int main()
{
    RenderWindow window(VideoMode(800, 600), "SFML works!");
    glewInit();
    GLuint prog = Shaders(vs,fs);
    BufferData();
 
    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();
            if(Keyboard::isKeyPressed(Keyboard::Escape))
                window.close();
        }
        glUseProgram(prog);
        glClearColor(0,0,0,0);
        glClear(GL_COLOR_BUFFER_BIT);
        glBindVertexArray(VAO);
            glDrawArrays(GL_POLYGON,0,4);
        glBindVertexArray(0);
        window.display();
    }
    glDeleteVertexArrays(1,&VAO);
    glDeleteBuffers(1,&VBO);
    glDeleteProgram(prog);
 
 
 
    return 0;
}
тут хеадер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include<GL/glew.h>
#include<GL/gl.h>
#include<glm/glm.hpp>
#include<SFML/OpenGL.hpp>
 
using namespace glm;
using namespace sf;
 
 
    GLuint Shaders(const GLchar *vsc,const GLchar *fsc)
    {
            GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
            GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
 
            glShaderSource(vertexShader,1,&vsc,NULL);
            glShaderSource(fragmentShader,1,&fsc,NULL);
 
            glCompileShader(vertexShader);
            glCompileShader(fragmentShader);
 
            GLuint program = glCreateProgram();
            glAttachShader(program,vertexShader);
            glAttachShader(program,fragmentShader);
            glLinkProgram(program);
 
            return program;
    }
 
 
GLuint VAO;
GLuint VBO;
 
 
void BufferData()
{
 
    float rectVerts[] =
    {
        -0.25,-0.5,0.0,
        -0.25,-0.25,0.0,
        0.25,-0.25,0.0,
        0.25,-0.5,0.0
    };
 
    glGenBuffers(1,&VBO);
    glGenVertexArrays(1,&VAO);
 
 
    // ============================
    // RECTANGLE
    // =========================
    glBindVertexArray(VAO);
        glBindBuffer(GL_ARRAY_BUFFER,VBO);
        glBufferData(GL_ARRAY_BUFFER,sizeof(rectVerts),rectVerts,GL_STATIC_DRAW);
        glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,3*sizeof(float),(void*)0);
        glEnableVertexAttribArray(0);
    glBindVertexArray(0);
 
}
По поводу кода ошибки тут вроде его нету
0
Миниатюры
JIT-отладчик или необработанные исключения  
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 13:17 4
Вы компилировали в GCC? Тогда скорее всего отладчик Visual Studio не поможет. Запустите отладку через CodeBlocks(gdb) и при ошибке посмотрите backtrace.

Мне кажется, удалять объекты нужно в обратном порядке.
C++
1
2
3
4
    
    glDeleteBuffers(1,&VBO);
    glDeleteVertexArrays(1,&VAO);    
    glDeleteProgram(prog);
0
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
24.10.2017, 13:49  [ТС] 5
Тоесть остальной код у меня практически верный? Пипец ты мне надежду дал :^)

Сори за тупизну, что такое backtrace. и как скомпилировать gdb? или что это вообще) Я просто юзаю codeblocks с gcc нажимаю f9 для билда и компиляции, это всё что я умею(
0
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 14:10 6
Меню Debug -> Start/Continue . Сборка у вроде вас отладочная (debug/Test.exe) так, что символы отладчик должен видеть. При падении приложение открыть окно "call stack" и вы сможете увидеть всю цепочку вызовов до точки, где у вас возникает исключительная ошибка.

Цитата Сообщение от Сергей Мишин Посмотреть сообщение
как скомпилировать gdb
Цитата Сообщение от Сергей Мишин Посмотреть сообщение
откомпилировать исключение
Похоже у вас неправильное понимания термина компиляции. Компиляция приложения - это можно считать, что это сборка приложения. Компилятор - это транслятор языка программирования в машинный код.

gdb должен быть в папке bin каталога MinGW (или CygWin) : gdb.exe
0
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
24.10.2017, 14:57  [ТС] 7
Спасибо) посмотрю щас
0
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
24.10.2017, 15:10  [ТС] 8
Сделал всё как ты говорил вроде, открыл gdb.exe, туда ничего не вводил нажал дебаг вот скрин
0
Миниатюры
JIT-отладчик или необработанные исключения  
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 15:34 9
Как же ничего нету, ошибка в nvoglnt.dll . Это по ходу компонент драйвера OpenGL от Nvidia. Других функции в списке Call stack нету, что наводит меня на мысль, что это происходит при выгрузке DLL, например при выходе из main или при вызове FreeLibrary. Значит, что-то вы намудрили с ресурсами OpenGL, что-то не так выделили или что-то не так удалили. Вы побывали мой код, где удаляется сначала VBO, а потом VAO,
0
1 / 1 / 1
Регистрация: 19.07.2016
Сообщений: 118
24.10.2017, 15:50  [ТС] 10
Да поменял, то же самое, в принципе, спасибо огромное за разъяснения, тут уже наверное дело в слабом компьютере или драйверами, при том что коды ранее нормально запускались, чем больше кода тем порядок путается и всякое бывает.

Добавлено через 3 минуты
Я убрал полностью vao, так как у меня всего одна фигура и ничего не будет, и работает всё прекрасно без jit окна, тогда в нём было дело получается где-то, но только где?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2017, 15:50

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

JIT - Отладчик VisualStudio
Переустановил Windows 10. Установил Visual Studio 2015. При создании проекта С# вылазит это окно...

Как отключить окно сообщение "Выберите JIT-отладчик"?
Как отключить сообщение &quot;Выберите JIT-отладчик&quot;? Или, что делать если оно выскакивает?

Отладчик присоединен, но не настроен на отладку данного исключения
что это за фигня и почему это вылетает??

Jit или самомодифицирующийся код
Здравствуйте, объясните, можно ли во время выполнения программы изменять код, как в Java? Т.е. в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.