Der Debugger will immer was zu tun haben

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

KnorxThieus

Betreff: Der Debugger will immer was zu tun haben

BeitragDo, Mai 23, 2013 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,


habe aus Spaß mal eine sich endlos verschachtelnde Funktion gebaut, etwa so:
BlitzBasic: [AUSKLAPPEN]
Function A(b)
DebugLog 1 ;Das hier ist der Zaubertrick!
Return A(b)
End Function

Notify A(1)


Sobald man das DebugLog rausnimmt stürzt blitzcc ab. (Sowar es zumindest bei mir, B+).
Offensichtlich verhindert jeder beliebige Befehl das Abstürzen, als ich anstatt DebugLog geprüft habe, ob die letzte Stelle von MilliSecs gleich "0" ist, ist er auch abgestürzt.

Nicht dass mich das stören würde, aber hat jemand eine Erklärung dafür?

Mfg,
KnorxThieus
Version: BlitzPlus / Blitz+

Lord Stweccys

BeitragDo, Mai 23, 2013 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht stürzt er in beiden Fällen ab, nur dauert es bei dem mit Funktion eben viel länger.
Ich könnte mir das so erklären, dass Die Schachtelung, da sie kein sonstigen Funktionsaufruf enthält,
irre schnell den Stack zerschießt und bei der Variante mit Funktion einfach viel länger braucht,
weil jedes mal noch eine Funktion aufgerufen wird.
 

CO2

ehemals "SirMO"

BeitragDo, Mai 23, 2013 13:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessantes Phänomen... Wenn ich Debug ausstelle (Program -> Debug Enabled?), stürzt der Compiler nicht ab.

Gründe: keine Ahnung Very Happy
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

KnorxThieus

BeitragDo, Mai 23, 2013 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich lasse es mal ein paar Minuten laufen. (Müsste doch reichen, oder?)

PS: Ups, jetzt ist's auch schon abgestürzt! Embarassed

Naja, halt wieder was dazugelernt...

EDIT: Oh, @CO2, hab dich erst jetzt bemerkt...
Naja, bei mir stürzt er in jedem Fall ab, hätte mir höchstens erklären können, wenn er bei eingeschaltetem Debugging nicht abstürzt; ohne Debug gibts ja kein DebugLog.
Version: BlitzPlus / Blitz+

DAK

BeitragDo, Mai 23, 2013 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit dem Abstürzen ist hald so, dass bei jedem Funktionsaufruf in dieser Schachtel die Daten (Rücksprungadresse, Variablen, ...) auf den Stack geschrieben werden. Wenn du unendlich viele solche Funktionsaufrufe hast, dann kriegst du hald bald nen Stacküberlauf, da der nicht unbegrenzt groß ist. Der hat zwar viel Platz aber eben nicht unbegrenzt viel.

DebugLog ist überraschenderweise ein sehr langsamer Befehl. In der Variante ohne Debuglog ist das Limit sehr schnell erreicht, da er nichts anderes tut, als neue Funktionsebenen zu öffnen. Hast du Debuglog drinnen, dann brauchts wesentlich länger, da er für das Debuglog deutlich länger braucht, als für die neue Funktionsebene allein.
Ist ganz normal so.
Gewinner der 6. und der 68. BlitzCodeCompo

KnorxThieus

BeitragDo, Mai 23, 2013 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Na OK. Hald wieder was gelernt. Wink

Danke auch!
Version: BlitzPlus / Blitz+

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group