Auf einem großen C-Anwendung, ich habe eine Hardware-Beobachtungspunkt auf einer Speicheradresse wie folgt festgelegt:GDB Hardware Watchpoint sehr langsam - warum?
(gdb) watch *0x12F5D58
Hardware watchpoint 3: *0x12F5D58
Wie Sie sehen, es ist ein Hardware-Beobachtungspunkt, keine Software, die die Langsamkeit erklären würde.
Jetzt hat sich die Laufzeit der Anwendung unter Debugger von weniger als zehn Sekunden auf eine Stunde geändert und gezählt. Der Watchpoint hat bisher dreimal ausgelöst, das erste Mal nach 15 Minuten, als die Speicherseite mit der Adresse von sbrk
lesbar gemacht wurde. Während dieser 15 Minuten sollte der Watchpoint effizient sein, da die Speicherseite nicht zugänglich war. Und das erklärt immer noch nicht, warum es danach so langsam ist.
Die Plattform ist x86_64 und die GDB-Versionen sind Ubuntu 9.10 Paket:
$ gdb --version
GNU gdb (GDB) 7.0-ubuntu
[...]
und Lager GDB 7.1 aus Quellen gebaut:
$ gdb-7.1 --version
GNU gdb (GDB) 7.1
Vielen Dank im Voraus für alle Ideen, was das sein könnte Ursache oder wie man es repariert/umgeht.
EDIT: entfernt werfen
EDIT: GDB 7.1
Ist es immer langsam, wenn es unter dem Debugger läuft oder nur wenn Sie einen Watchpoint gesetzt haben? – Gabe
Nur mit Watchpoint. –