Я отлаживаю двоичный файл (только сборка), используя GDB 7.1, скомпилированный через MacPorts для Snow Leopard. Меня интересует конкретный адрес, который я нашел с помощью команды find
gdb. Так что это действительно правильный адрес:
(gdb) printf "%s\n", 0x00196f34
bruno
(gdb)
Проблема заключается в том, что всякий раз, когда я устанавливаю для него точку наблюдения (watch *0x00196f34
), И к ней обращаются, система сразу падает и перезагружается.
Я заметил, что аппаратная точка наблюдения тогда включена, ожидая менее серьезного результата, я переключился на программную точку наблюдения , используя set can-use-hw-watchpoints 0
, но это не решило проблему.
Я пытался использовать gdb 6.3
версию, которая поставляется с Xcode, и watch работает нормально. Я заметил разницу при настройке таких часов для 6.3 и 7.1:
для GDB 6,3
(gdb) watch *0x00196f34
Watchpoint 1: *0x00196f34
(gdb) info breakpoints
Num Type Disp Enb Address What
1 watchpoint keep y *0x00196f34
для GDB 7,1
(gdb) watch *0x00196f34
Hardware watchpoint 1: *1666868
(gdb) info breakpoints
Num Type Disp Enb Address What
1 hw watchpoint keep y *1666868
Почему старый gdb, который работает, печатает в шестнадцатеричном формате, а новый переводит адрес в десятичное число? Я все еще хочу работать с GDB 7, так что вы понимаете, что здесь происходит?
Бруно Веласко