-
analyser de bug + opengl
Bonjour,
Il y a 2 ans ,J'ai écrit en jeu de labyrinthe 3D avec les API OpenGL.
j'ai fais quelque modifications pour initialiser / deinitialiser opengl quand c'est nécéssaire (exemple touche ECHAP pour revenir au menu du jeux utilisant le GDI et le menu Nouvelle Partie ou Reprendre partie qui (re)initialise les API OpenGL).
Avec mes modifications apportées ça marche pas trop bien quand je reinitialise OpenGL , sachant que MSVC m'indique parfois une boite de dialogue du genre "Débordement heap", et je n'arrive pas à localiser le défaut, même avec la modless de Call stack (intégré dans MSVC).
Il doit s'agir dans mon jeux d'un ou des pointers en cause, et ce bug se produit parfois à l'intérieur d'une fonction OpenGL.
Ma question (HS) : Existe t'il un soft pour enfin traquer les pointers en cause ?
c'est à dire traquer par exemple les débordements de pointer ou écriture sur un ou des pointers libérer.
Autre question : OpenGL bug quand c'est mal paramétrer ce qui est logique (ex absence d'appel de la fonction GlViewPort (de mémoire) , dans ce cas existe t'il un utilitaire spécialiser permettant d'analyser et de consigner les appels OpenGL non conforme ou les appels oublier et de consigner par exemple les appels de texture déjà libérer (exemple glbindtexture) ?
Je voudrais gagner du temps.
Merci.
-
Pour la première partie, tu as besoin d'un profiler (Valgrind, AQTime), mais une bonne rigueur de programmation résoudrai surement bien des problèmes. Tu peux aussi te faire ton propre gestionnaire de mémoire qui détectera ce genre de problème et te permettra de les corriger.
Pour OpenGL, tu as gDEBugger, mais pareil qu'au dessus tu peux aussi te faire un gestionnaire.
-
Il y a aussi glslDevil, si je me rappelle bien du non, qui peut aider un pue (un tout petit peu, car il est plus pour le débogage de shaders)
Sinon, le retour à un menu, ne devrait pas arrêter OpenGL ... enfin, en théorie.
L'arrête d'OpenGL, fait que toutes textures / zone écran ou autre initialisés vont être perdus (leur utilisation provoquera des plantages)