Ich habe einen Zeiger in GDB, wie kann ich herausfinden, wo es zuerst auf dem Heap zugeordnet wurde? Wie kann man in GDB herausfinden, wer eine Adresse auf dem Heap malloc hat?
In WinDBG, kann dies nach dem Einschalten
Da Valgrind auf gflags /i <*exe> +ust
von !heap -p -a <0x12345678>
getan werden kann mir sagen, wo der Speicher zugewiesen wird (wenn es einige Lecks erkennt), ich denke, dies auch möglich ist?
(dies ist nicht etwa Beobachtungspunkt ist. Dadurch wird die Situation gegeben, wo ich in GDB brechen zufällig die in die Anwendung, Blick auf einen Zeiger und wollen wissen, „wer dieses Stück Erinnerung geschaffen“?)
Verwendung von Reverse-Debugging in GDB ist eine sehr neuartige Möglichkeit und wahrscheinlich die richtige Weg, um dieses Problem zu lösen. Ich habe mit GDB 7.1 - der neuesten stabilen Version - einige Probleme mit diesem Ansatz festgestellt. Das Reverse Debugging ist ein ziemlich neues Feature in GDB, daher musste ich HEAD (7.2) ausprobieren, um es zu reparieren.
Es sagt wahrscheinlich etwas über die Reife des GDB-Ansatzes aus, aber ich denke, es sollte definitiv verwendet werden, wenn es ausgereifter ist. (Awesome Feature!)
Danke! Sowohl Ihr Ansatz als auch Ihre ks1322 scheinen gültig zu sein. Es ist aufschlussreich über mtrace und glib allocation debugging zu wissen. Auf der anderen Seite finde ich, dass ks1332s Ansatz schlauer und wahrscheinlich näher an GDB ist (daher der Titel der Frage). Ich werde mit beiden experimentieren und sehen, welche in der Praxis besser ist, bevor ich eine richtige Antwort wähle. – kizzx2