Der Debugger will immer was zu tun haben
Übersicht Sonstiges Smalltalk
KnorxThieusBetreff: Der Debugger will immer was zu tun haben |
Do, Mai 23, 2013 13:21 Antworten mit Zitat |
|
---|---|---|
Hallo,
habe aus Spaß mal eine sich endlos verschachtelnde Funktion gebaut, etwa so: BlitzBasic: [AUSKLAPPEN] Function A(b) 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 |
Do, Mai 23, 2013 13:30 Antworten mit Zitat |
|
---|---|---|
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. |
||
CO2ehemals "SirMO" |
Do, Mai 23, 2013 13:32 Antworten mit Zitat |
|
---|---|---|
Interessantes Phänomen... Wenn ich Debug ausstelle (Program -> Debug Enabled?), stürzt der Compiler nicht ab.
Gründe: keine Ahnung |
||
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 |
Do, Mai 23, 2013 13:33 Antworten mit Zitat |
|
---|---|---|
Ich lasse es mal ein paar Minuten laufen. (Müsste doch reichen, oder?)
PS: Ups, jetzt ist's auch schon abgestürzt! 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 |
Do, Mai 23, 2013 16:18 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Mai 23, 2013 19:30 Antworten mit Zitat |
|
---|---|---|
Na OK. Hald wieder was gelernt.
Danke auch! |
||
Version: BlitzPlus / Blitz+ |
Übersicht Sonstiges Smalltalk
Powered by phpBB © 2001 - 2006, phpBB Group