Instabile Programmlaufzeit :(



  • Na gut, noch andere Vorschläge^^



  • Beides. 1.5h im Debugger und wenn es eine erreichbare main() hat, dann da try-catch rein.



  • [MOP] schrieb:

    Na gut, noch andere Vorschläge^^

    Wild loggen. Wenn erstmal Funktionseintritt und -austritt von ein paar Top-Level-Funktionmen geloggt werden, und dann immer weiter rein, haste die Stelle schnell. FALLS er immer an der selben Stelle aussteigt.



  • Ok danke, werd ich versuchen...
    Wie kann ich herausfinden oder analysieren ob mein Programm Speicherlecks produziert? (das ist doch auch eine Möglichkeit, weswegen er abstürzen kann...?) Kennt da jemand was für Linux, oder worauf muss ich im Code achten?


  • Mod

    Worauf du im Code achten musst, solltest du selber wissen, wenn du dynamisch Speicher verwaltest. Das Programm valgrind kann dir sehr viele Fehler finden. Außerdem könntest du gegen die Debug-Version der C++-Standardbibliothek linken, das findet dir nochmal jede Menge potentielle Fehler. Außerdem kannst du einstellen, dass ein Core-dump erstellt werden soll, wenn das Programm abstürzt. Wenn du den dann im Debugger anguckst, hast du sofort die Stelle gefunden an der das Programm abstürzt und alle Variablenwerte an dem Punkt. Damit sollte sich die Ursache fix finden lassen.



  • Eine schnelle Frage, könnte es sein, dass mein Programm gar nicht abstürzt sondern abgewürgt wird, weil es per php mit der Funktion popen gestartet wird? 😕



  • [MOP] schrieb:

    Eine schnelle Frage, könnte es sein, dass mein Programm gar nicht abstürzt sondern abgewürgt wird, weil es per php mit der Funktion popen gestartet wird? 😕

    Jedes PHP-Script unterliegt einer Laufzeitbeschränkung, die in der Konfiguration aufgehoben werden kann. Unter Umständen kann es also sein, dass das PHP-Script die Laufzeit überschreitet und daher gekillt wird.

    Genaures kann ich dir dazu aber nicht sagen. Informier dich dazu im Internet oder starte dein Programm einfach mal so (ohne PHP) bzw. starte über PHP ein Programm, was alle 5 Minuten einen Texteintrag mit der aktuellen Zeit macht. Sollte auch dieses simple(!) Programm "abstürzen", so liegt es vermutlich an PHP.



  • Du könntest ja evtl. falls es doch nicht an PHP popen lag , einen testtreiber schreiben der einzelne Methoden ausprobiert.

    Viel erfolg.



  • [MOP] schrieb:

    Eine schnelle Frage, könnte es sein, dass mein Programm gar nicht abstürzt sondern abgewürgt wird, weil es per php mit der Funktion popen gestartet wird? 😕

    Gäbe es da nicht den einfachen Test es einmal ohne php zu starten...



  • Joa es lag gar nicht an PHP sondern an fork(), das wird in meinem Programm recht oft aufgerufen und beim 9.000 mal beendet sich das Programm einfach so...
    Testprogramm:

    #include <iostream>
    #include <stdlib.h>
    
    int main()
    {
        int times=0;;
        while (true)
        {
            pid_t  pid;
            pid=fork();
            if (pid>0&&pid!=0) 
            {
                system("clear");
                std::cout << times << " Versuche"<<std::endl;
            }
            else
            {
                exit(0);
            }
            times++;
        }
        return 0;
    }
    

  • Administrator

    [MOP] schrieb:

    ... fork(), das wird in meinem Programm recht oft aufgerufen und beim 9.000 mal beendet sich das Programm einfach so...

    9000 mal fork ? 😮
    Wieso machst du 9000 forks? Weisst du überhaupt was ein fork so macht? Wie wäre es mit Threads? Wieso brauchst du überhaupt 9000 forks?

    Grüssli



  • Ich weiß 😉
    Ich brauch es weil ich execvp benutze, und das benutze ich, um wget (für http-requests) zu starten, das war aber eh nur eine Übergangslösung, und ich schreibe mir jetzt eine eigene Klasse dafür... 😉


Anmelden zum Antworten