Im Debugmode von Visual Debug vorübergehend deaktivieren?



  • Hi

    Ich habe einen rekursiven Algorithmus der im Debugmode von Visual zu einem Stackoverflow führt. Selbst die Stacksize in den Projektsettings erhöhen hat keinen Effekt. Im Release Mode läuft es einwandfrei.

    Kann mir bitte jemand sagen wie ich im Debugmode jenen vorübergehend de- und reaktivere
    z.B. der Art:
    deactiveDebug
    RecursiveFunction();
    activateDebug

    Danke
    Stefan



  • #ifndef _DEBUG
    RecursiveFunction();
    #endif

    Allerdings würde ich das programm nicht ausführen, wenn im debugmode ein stackoverflow passiert. Da ist garantiert ein Fehler drin!



  • Sicher das die Routine auch dann ausgeführt wird, wenn der Debugmode aktiv ist? Das schaut jetzt eher so aus als würde die Funktion übersprungen werden wenn der Mode aktiv ist (??)

    Stefan



  • jo, genau. Sie wird nicht ausgeführt. Hab deine Frage so verstanden.
    Den Debugmodus kann man nicht "ausschalten". Wenn ich du wäre, würde ich versuchen, den Fehler zu finden.



  • ich habe eine rekursive Funktion, die nicht mal Paramter auf den Stack schiebt. Ausser der Rücksprungadresse vielleicht.

    Nach ca. 2000 Aufrufen kommt der Stackoverflow.

    Das ganze ist eine FloodFill Routine

    void FloodFill4()
    {
       g_pBuffer = g_pImg+ g_y*g_w + g_x;
       if ( *g_pBuffer == g_cCont)
       {
          *g_pBuffer = g_cFill;
    
          if (g_pDC)
            g_pDC->SetPixel( g_x+g_oX, g_y+g_oY, g_colFill);
    
          g_y-= 1;
          FloodFill4();
    
          g_y+= 2;
          FloodFill4();
    
          g_y-=1;
          g_x-=1;
          FloodFill4();
    
          g_x+=2;
          FloodFill4();
    
          g_x-=1;   // wieder am ausgangspunkt
       }
    }
    

    die g_ sind globale Variablen, damit kann ich Parameterübergaben vermeiden. Es werden weder neue Variablen definiert noch andersweitg so massiv Speicher verbraucht dass ein StackOverflow auftreten müsste imo.

    Stefan


Anmelden zum Antworten