Ich habe in den letzten Wochen damit gearbeitet, einen wirklich schwierigen Bug zu finden, der meine Anwendung stürzt. Zuerst stürzte die Anwendung auf die Zuweisung einer std :: string, dann während der Freigabe einer lokalen Variablen ab.Ergänzung zu Valgrind?
Nach sorgfältiger Prüfung des Codes gab es keinen Grund für einen Absturz an diesen Stellen; es stürzte jedoch immer ab, während versucht wurde, einen ungültigen Zeiger freizugeben (d. h. einen Zeiger, der auf ungültigen Speicher zeigte). Und ich habe keine Ahnung, warum dieser Zeiger nicht auf den richtigen Ort zeigte.
Ich vermute, dass das Problem mit einem Speicherbeschädigungs-Problem oder Pointer-Korruptions-Problem irgendeiner Art zu tun hat. Das Problem ist, dass ich es nicht visuell aufspüren kann .... noch. Ich habe keine Ahnung, wo ich anfangen soll, im Code zu suchen, und es gibt Tausende von Codezeilen, die durchlaufen werden müssen, so dass dies nicht als realistische Annäherung an das Problem erscheint.
So kommt Valgrind ...
Ein Werkzeug, das ich über viele eine Zeit abhing haben Probleme im Code zu finden, die zu einem Absturz dieser Art führen kann. Dieses Mal ist es jedoch leer ausgegangen! Ich sehe keine Fehler in Valgrind, wenn das Problem auftritt und daher der Grund für mich, diese Frage zu stellen.
Gibt es noch andere Anwendungen, die Valgrind ergänzen und dabei helfen können, Probleme im Code zu finden, die den oben erwähnten Absturz verursachen könnten?
Vielen Dank!
Sie könnten versuchen, ein minimales, übersetzbar Codebeispiel veröffentlichen, die das Problem reproduziert. Ich wette, dass der Versuch, ein solches Codebeispiel zu schreiben, das Problem für Sie offensichtlich macht. Wenn nicht, sind wir mehr als glücklich zu helfen. –
Möchten Sie sehen, wo der Code abstürzt (d. H. Ein Beispiel, wo es abstürzt)? weil es keinen Grund dafür gibt, wie ich erwähnt habe, aber es macht mir nichts aus, es zu posten – bbazso