На большом приложении C, я установить аппаратную точку наблюдения на адрес памяти следующим образом:GDB аппаратная сторожевая точка очень медленная - почему?
(gdb) watch *0x12F5D58
Hardware watchpoint 3: *0x12F5D58
Как вы можете видеть, это аппаратная точка наблюдения, а не программное обеспечение, которое могло бы объяснить медлительность.
Теперь время работы приложения под отладчиком изменилось с менее чем десяти секунд до одного часа и подсчета. Точка наблюдения срабатывала три раза до этого момента, первый раз через 15 минут, когда страница памяти, содержащая адрес, была сделана читаемой sbrk
. Разумеется, в течение этих 15 минут точка наблюдения должна была быть эффективной, поскольку страница памяти была недоступна? И это все еще не объясняет, почему это так медленно.
Платформа x86_64 и версия GDB является Ubuntu 9,10 пакет:
$ gdb --version
GNU gdb (GDB) 7.0-ubuntu
[...]
и запас GDB 7.1 построен из источников:
$ gdb-7.1 --version
GNU gdb (GDB) 7.1
Заранее спасибо за любые идеи, как то, что может быть вызвать или как исправить/обойти его.
EDIT: убрана отливать
EDIT: GdB 7,1
Всегда ли медленно работать под отладчиком или только когда у вас установлена точка наблюдения? – Gabe
Только с точкой наблюдения. –