Xanatus Geschrieben 31. Januar 2010 Teilen Geschrieben 31. Januar 2010 (bearbeitet) Ich hab seit einer Weile mit den im Titel genannten Problemen zu kämpfen. Es handelt sich um eine große ziemlich komplexe C++ Multithread Server Anwendung. Momentan lass ich das Programm im Visual Studio Debugmodus laufen um mögliche Fehler zu finden. Der Server läuft in der Regel für 5 bis 10 Stunden stabiel und crasht dann irgendwann entweder mit einem "Heap Corruption detected" Error beim freigeben (delete) von Speicher oder mit einem unmöglichen Fehler z.B.: for(int x = 0; x < 9; x++) myObj[x]->doSomething(); // x ist jetzt auf einmal 537 und die Anwendung crasht. Die Fehler treten ziemlich zufällig auf und nur selten an den selben Stellen. Memory leaks kann ich nach einigen tests mit _CrtDumpMemoryLeaks() ausschliesen. Eigentlich deutet alles auf einen Bufferüberlauf hin, der den Stack und Heap zerschießt, nur weiss ich nicht wo ich anfangen soll zu suchen. Ich weiss das es einige Tools gibt, die dabei helfen können. Was ich mich nur frage ist, gibt es irgend ein Tool das ich mit dem Visual Studio Debugger zusammen nutzen kann? Ich suche sowas wie Full PageHeap debugging innerhalb der Entwicklungsumgebung so das ich mich möglichst nicht mit den Crash Dumps rumschlagen muss. Bevor ich das nämlich tue, wollte ich mal nachgefragt haben ob ich mir den Zeitaufwand auch sparen könnte. Hattet ihr schonmal so ein Problem? Wie geht ihr sonst damit um? Bearbeitet 31. Januar 2010 von Xanatus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 8. Februar 2010 Teilen Geschrieben 8. Februar 2010 Tipps für Tools habe ich leider nicht für dich, aber die Fehlerbeschreibung klingt nach falscher oder fehlender Threadsynchronisierung. Vielleicht hat jemand kritische Stellen mit einfachen Variablen "gelockt". Oder auch mit volatile-Variablen. Das geht oft gut, aber eben nicht immer. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.