Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.09.2011, 21:21

Eine Frage zu Debug-DLLs

Hay!
Warum gibt es eigentlich immer spezielle DLLs fürs Debuggen ?(
Gibt es konkret Funktionen die man bei Debug nutzen sollte um "bessere/genauere" Ergebnisse zu haben?

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

15.09.2011, 21:27

Nun... erm... normale DLLs und Executables enthalten Maschinen-Code. Den zu debuggen macht nicht immer Spaß, ist schwer lesbar und verständlich-lesbare Informationen über Variablen-Namen, Klassen, Funktionen und Methoden sind darin nicht enthalten. Debug-Versionen bieten das alles. Mit genauer hat das also nichts zu tun. Einfach nur damit, dass man nur mit Debug-Versionen auch wirklich debuggen kann.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

15.09.2011, 21:35

Gäbe es Beispiele für so etwas?

TriBase - tbLog.cpp:

C-/C++-Quelltext

1
2
3
4
fprintf(tb_g_pLogFile, "%s", acText);
#ifdef _DEBUG
        fflush(tb_g_pLogFile);
#endif


Warum die Funktion fflush, als Beispiel. Warum den Buffer nur in Debug leeren?

MfG
Check

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

15.09.2011, 21:46

In Debug-Versionen spielt Geschwindigkeit normalerweise keine Rolle, sondern Fehleraufspürung (daher der Name).
Darum wird der Code auch normalerweise vom Compiler nicht sonderlich optimiert.

@Beispiel:
fflush ist langsam, sorgt aber dafür, dass die Ausgabe sofort in die Datei geschrieben wird. Könnte beim Debuggen helfen.

5

15.09.2011, 21:48

Ach so, also würden Release-DLLs auch funktionieren, man findet dann nur nicht mehr so gut die Fehler? Also ist der Kerninhalt das was der Debugger selbst macht: Fehler finden/Fehlersuche erleichtern.

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

15.09.2011, 21:59

Also mal ganz langsam:
1) Der Debugger macht nichts selbst. Fehler finden schon gar nicht.

2) Wenn Du eine Release-Version nimmst, dann bekommst Du statt dem Code aus Variante A plötzlich nur noch den aus Variante B angezeigt.

Variante A (mit Debug-Infos)

C-/C++-Quelltext

1
if (x) { y = 15; }


Variante B (ohne Debug-Infos)

Quellcode

1
2
3
4
5
04000020 mov eax, [ebp+8]
04000024 or eax, eax
04000025 jnz 04000031
04000029 mov [ebp+12], 15
04000031 ...
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

15.09.2011, 22:05

Das der Debugger Fehler nicht findet ist klar, scheine mich schlecht ausgedrückt zu haben. :D
Danke jedenfalls! Nun weiß ich Bescheid. :D

MfG
Check

Werbeanzeige