Der Debugger will immer was zu tun haben
Übersicht

![]() |
KnorxThieusBetreff: Der Debugger will immer was zu tun haben |
![]() 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 ![]() Nicht dass mich das stören würde, aber hat jemand eine Erklärung dafür? Mfg, KnorxThieus |
||
Version: BlitzPlus / Blitz+ |
![]() |
Lord Stweccys |
![]() 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" |
![]() 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 |
![]() 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 |
![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na OK. Hald wieder was gelernt. ![]() Danke auch! |
||
Version: BlitzPlus / Blitz+ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group