В большом приложении C я установил аппаратную точку наблюдения на адрес памяти следующим образом:
(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
Заранее благодарим за любые идеи о том, что может быть причиной или как ее исправить / обойти.
РЕДАКТИРОВАТЬ: удалены литой
РЕДАКТИРОВАТЬ: GDB 7,1