ich verzweifel grad.. ich hab ein MemoryLeak in meinem Programm entdeckt als ich mal die Speicherauslastung beobachtet hab. Die ging stetig hoch.. pro sekunde etwa 100kb.
Ich hab ewig lange gesucht und der reihe nach alles auskommentiert, bis ich rausgefundne habe das wenn ich die glDrawArrays calls auskommentiere der Speicherverbrauch nichtmehr weiter steigt.
Dachte ich mir "Gut.. ist wohl ein Speicherleck im glDrawArrays im aktuellen Treiber".. und hab es gegen glBegin/glEnd ausgetaucht... genau der geiche effekt.. noch immer steigt der Speicherverbrauch..
Ich hab grad nichtmal ansatzweise eine Idee was das Problem sein kann... sobald etwas gezeichnet wird ist das Speicherleck da.. und dabei liegt es nicht an den Daten von mir, denn wenn ich einfach nur nen fest definiertes Quad via glBegin/glEnd zeichne ist das leck ebenfalls da.
Hat irgendwer eine idee was da das problem sein kann?
Aya
PS: Das ganze passiert unter MacOSX.. auf dem iPhone "glaube" ich auch.. zumindest stürzt meine App immer nach einiger Zeit ab und zeigt typische Speichermangel merkmale (inkl. Memory Warnings im Debugger).
EDIT: 99% der Draw-Calls zeichnen nur ein Quad via TriangleFan.. also meist ist es: glDrawArrays(GL_TRIANGLE_FAN, 0, 4)
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Wirf mal einen Blick darauf: http://valgrind.org/, ist zwar grundsätzlich Linux - daher ein freies Programm -, aber sie unterstützen MacOSX auch (siehe "Platforms").
Ich kenn es selber nicht, aber es soll ein ziemlich mächtiges Tool sein.
Mhh... ich blick bei dem ding grad nich durch wie ich das compilieren soll... da sind zwar zig verschiedene Makefiles, aber irgendwie.. egal welche ich versuche zu 'Maken', nix klappt...
Ein simples:
Code:
./configure make
klappt leider nicht, weil es kein standard Makefile gibt..
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich finde, Du solltest mit Valgrind etwas mehr Geduld haben. Das ist doch nicht nur so ein Hopp-Einmal-Brauchen-Und-Dann-Wegwerfen-Ding. Wenn Du Dich damit auskennst, ist das eine echte Bereicherung für Deine Programmierumgebung. Wenn Du professionell arbeitest, brauchst Du so etwas ohnehin.
Wenn Du jetzt Zeit hast, dann setz Dich auf den Hosenboden und mach mal. Stell Dir vor, Dir passiert so etwas, wenn Du mal einen ungeduldigen Kunden hast, was machst Du dann? Dann hast Du keine Zeit, Dich lange in ein neues Tool einzulesen.
Zum Beispiel könntest Du mal googeln nach "compile Valgrind"?! Würde mich doch sehr wundern, wenn da nichts rauskäme.
Ich finde, Du solltest mit Valgrind etwas mehr Geduld haben. Das ist doch nicht nur so ein Hopp-Einmal-Brauchen-Und-Dann-Wegwerfen-Ding. Wenn Du Dich damit auskennst, ist das eine echte Bereicherung für Deine Programmierumgebung. Wenn Du professionell arbeitest, brauchst Du so etwas ohnehin.
Wenn Du jetzt Zeit hast, dann setz Dich auf den Hosenboden und mach mal. Stell Dir vor, Dir passiert so etwas, wenn Du mal einen ungeduldigen Kunden hast, was machst Du dann? Dann hast Du keine Zeit, Dich lange in ein neues Tool einzulesen.
Zum Beispiel könntest Du mal googeln nach "compile Valgrind"?! Würde mich doch sehr wundern, wenn da nichts rauskäme.
Ich weiß grad echt nicht was ich dazu sagen soll.. *sprachlos*
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Eigentlich gibt es binary builds und module wie gdb und valgrind sind oft in der compiler toolchain dabei. Schlimmer ist es eher eine gute UI zu finden, damit man nicht immer auf Kommandozeile alles recht umständlich eintrippen und etwas unübersichtlich dargestellt bekommt.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Zitat:
Eigentlich gibt es binary builds und module wie gdb und valgrind sind oft in der compiler toolchain dabei. Schlimmer ist es eher eine gute UI zu finden, damit man nicht immer auf Kommandozeile alles recht umständlich eintrippen und etwas unübersichtlich dargestellt bekommt.
Ich nehme an, dass das stimmt. Das Problem dabei ist nur: man kann sich keine nützliche Essenz daraus ziehen. Was heißt jetzt genau "Eigentlich gibt es binary builds"? Was für welche? Wo im Web sind die zu finden? Operationale Anweisungen, BITTE. Und das ist durchaus freundlich gemeint. Viele Grüße Mama
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
In Linux liegt es in den paketmanagern dabei(z.B. "yum install valgrind"), bei Mac OS X gibt es nur eine inoffiziellen port, der nicht gerade stable ist und für windows gibt es auch kein support. Valgrind ist eng mit gcc verbunden und mingw!=gcc. Wenn man Platformübergreifende memory leak detection will, dann muss man zu anderen Lösungen greifen, google und sourceforge haben viele Projekte, die sich damit beschäftigen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.