tl;dr: RelWithDebugInfo mit deaktivierten Optimierungen (/Od) für schnelle, debugbare Version
Ich habe gerade mein Problem mit extrem langsamen Debug-Builds gelöst, und auch wenn die Lösung dann doch recht einfach war, wollte ich sie einfach mal aufschreiben, vielleicht hilft es ja trotzdem jemanden.
Also, mein Spiel lud im Debug-Build unglaublich langsam. Während die Release-Version innerhalb von <10 Sekunden startet, braucht der Debugbuild mehrere Minuten - was die Produktivität unglaublich in den Keller treibt. Das Debug-Builds langsamer laufen ist ja normal, allerdings war in meinem Fall das Spiel immer noch sehr flüssig spielbar, nur das Laden dauerte eben unglaublich lange. Ich habe also ein wenig im Internet gesucht um zu sehen, welche Schalter man eventuell benutzen kann, habe auch ein paar ausprobiert, aber nichts hat wirklich geholfen.
Nun gibt es ja auch immer noch die RelWithDebInfo Konfiguration (zumindest in meinen CMake erstellen VS2013 Projekten). Allerdings hatte ich damit das Problem, dass Variablen-Inhalte nicht korrekt angezeigt werden. Ich hatte aber gar keine üblen Speicherzugriffsfehler oder so, meine Logik war einfach falsch und ich wollte mein Programm durchsteppen und sehen, was schief läuft, und ohne korrekte Variablen Inhalte ging es einfach nicht.
Dann habe ich aber weiter geschaut und in den Projektoptionen unter "C/C++ / Optimization" alle Code-Optimierungen deaktiviert (/Od). Und schon wurden alle Variableninhalte richtig angezeigt und das Spiel startet genauso schnell wie im Debug-Build.
Ein richtiger Debugbuild kann natürlich immernoch jede Menge Extra-Infos liefern. Aber für all die Fälle wo ich das gar nicht brauche habe ich jetzt einen Build, mit dem man wesentlich schneller Dinge testen kann.
schnellere Debug builds [gelöst]
schnellere Debug builds [gelöst]
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: schnellere Debug builds [gelöst]
Du könntest auch mal versuchen die Environmen Variable _NO_DEBUG_HEAP auf "1" zu setzten und dann Visual Studio neustarten. Diese Variable hält den Debugger davon ab alle mit dem Heap zusammenhängenden Funktionen (malloc, free, HeapAlloc, HeapFree, etc) durch seeeehr langsame Debugversionen zu ersetzen. Ich habe durch das setzten dieser Variablen einen Speedup von Faktor 50 beobachtet. Das Heap Debugging von Visual Studio deckt nur in den seltesten Fällen Probleme auf, es ist also nicht weiter schlimm es abzuschalten. Ich bevorzuge zum finden von Speicherproblemen schon eher einen Electric Fence Allocator oder ähnliches.
Blog: http://3d.benjamin-thaut.de Tolle mobile engine: http://www.projectanarchy.com
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: schnellere Debug builds [gelöst]
man kann auch einfach unter "Debugging" den Eintrag "Environment" auf "_NO_DEBUG_HEAP=1" setzen, geht dann ohne Neustart und ist minimalinvasiver
Re: schnellere Debug builds [gelöst]
Funktioniert allerdings nicht bei C# projekten ;-)
Blog: http://3d.benjamin-thaut.de Tolle mobile engine: http://www.projectanarchy.com
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: schnellere Debug builds [gelöst]
Ab VS 2013 gibt es den /Zo switch, mit dem Release Builds plötzlich wirklich gut zu debuggen gehen... ;)
https://randomascii.wordpress.com/2013/ ... udio-2012/
https://randomascii.wordpress.com/2013/ ... udio-2012/