schnellere Debug builds [gelöst]

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2547
Registriert: 04.08.2004, 20:06
Kontaktdaten:

schnellere Debug builds [gelöst]

Beitrag von Jonathan »

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.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: schnellere Debug builds [gelöst]

Beitrag von Ingrater »

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.
Benutzeravatar
Artificial Mind
Establishment
Beiträge: 802
Registriert: 17.12.2007, 17:51
Wohnort: Aachen

Re: schnellere Debug builds [gelöst]

Beitrag von Artificial Mind »

man kann auch einfach unter "Debugging" den Eintrag "Environment" auf "_NO_DEBUG_HEAP=1" setzen, geht dann ohne Neustart und ist minimalinvasiver
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: schnellere Debug builds [gelöst]

Beitrag von Ingrater »

Funktioniert allerdings nicht bei C# projekten ;-)
Benutzeravatar
dot
Establishment
Beiträge: 1745
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: schnellere Debug builds [gelöst]

Beitrag von dot »

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/
Antworten