Настройка двухмашинной отладки ядра через firewire - PullRequest
1 голос
/ 03 ноября 2011

Инструкции, найденные на Настройка отладки ядра - это то, что я использовал для этой цели. На машине с запущенным kext, которую я хочу отладить, я вижу сообщение «Подключен к удаленному отладчику». На машине, на которой я запускаю GDB, я вижу:

(gdb) kdp-reattach localhost
Connected.

Проблема в том, что showallkmods возвращает пустой список, и ни одна из других подобных команд не работает:

(gdb) showallkmods
kmod        address     size        id    refs     version  name

(gdb) showalltasks
task        vm_map      ipc_space  #acts   pid  process     io_policy    wq_state   command
Invalid type combination in equality test.

(gdb) showregistry
Please load kgmacros after KDP attaching to the target.

(gdb) source /Volumes/KernelDebugKit/kgmacros 
Loading Kernel GDB Macros package.  Type "help kgm" for more info.

(gdb) showallkmods
kmod        address     size        id    refs     version  name

(gdb) showregistry
Please load kgmacros after KDP attaching to the target.

(gdb) showbootargs
Invalid cast.

Я использую 10.6.8 и использую kernel_debug_kit_10.6.8_10k540.dmg

Я не уверен, какие еще детали могут понадобиться для диагностики того, что пошло не так, но если вы хотите задать вопросы в комментариях, я, безусловно, могу попытаться предоставить дополнительную информацию.

1 Ответ

1 голос
/ 07 ноября 2011

Ошибка "Invalid type combination in equality test." указывает мне, что GDB может ожидать архитектуру ЦП, отличную от того, на котором работает ядро, к которому вы подключаетесь. Ядро 10.6 существует как в 32-битном, так и в 64-битном вариантах, и по умолчанию оно определяется оборудованием, которое загружается. GDB обычно по умолчанию равен x86_64, если ваш процессор поддерживает его (верно для всех компьютеров Intel Mac, за исключением самых ранних версий на базе Core Duo), поэтому, если вы подключаетесь к 32-разрядному ядру (по умолчанию на большинстве компьютеров Mac, выпущенных до 2011 года), вам необходимо передайте аргумент -arch i386 при запуске gdb. Вы можете проверить текущую архитектуру процессора ядра, введя команду uname -a.

Обновление: в OSX Mountain Lion, ядро ​​всегда работает в 64-битном (x86_64) режиме. В OSX Lion ядро ​​по умолчанию работает в 64-битном режиме на компьютерах Mac, которые способны работать Mountain Lion и в 32-битном режиме в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...