Snow Leopard аварийно завершает работу после того, как GDB пытается получить доступ к адресу, используя точки наблюдения - PullRequest
1 голос
/ 12 января 2011

Я отлаживаю двоичный файл (только сборка), используя 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, так что вы понимаете, что здесь происходит?

Бруно Веласко

...