|
|
  |
Kernel GDB - как пользоваться?, Linux |
|
|
|
Feb 19 2009, 21:13
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Здравствуйте! Очень интересует тема использования Kernel Debugger (KGDB) в Linux. Насколько я знаю можно осуществлять отладку по последовательному порту или по ethernet... Для начала хотелось бы познакомиться с этим процессом для случая с последовательным портом. Насколько я знаю, такой отладчик стал частью ядра начиная с 2.6.26, до этого был доступен в качестве отдельных патчей. Все руководства, которые удалось найти сейчас - устаревшие, не актуальные и не работают  И в то же время, видно что ведется его активная разработка. А гуглЪ предательски молчит... Подскажите, пожалуйста, где можно найти документацию на это дело? ЗЫ Нашел где включить это в ядре, какие параметры ядру задать, как DBG запустить на последовательном порту, но эта связка не работоспособна оказалась. ЗЗЫ По сайту искал, гугл использовал. Не стал бы никого беспокоить, если бы было просто найти ответы на мои вопросы...
--------------------
|
|
|
|
|
Feb 20 2009, 08:25
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(Harbour @ Feb 20 2009, 08:41)  less linux-2.6/Documentation/sh/kgdb.txt Вот! В первую очередь искал в разделе документации... У меня версия ядра из git, самая свежая, правда это не из основной ветки, но не думал что там что-то подотрут... Клянусь своим процессором и оперативной памятью, ничего нету... Код linux-2.6/Documentation/sh$ ls -la итого 28 drwxr-xr-x 2 s s 4096 2009-02-11 15:31 . drwxr-xr-x 82 s s 4096 2009-02-19 16:38 .. -rw-r--r-- 1 s s 1173 2009-02-11 15:31 clk.txt -rw-r--r-- 1 s s 10199 2009-02-11 15:31 new-machine.txt -rw-r--r-- 1 s s 1416 2009-02-11 15:31 register-banks.txt linux-2.6/Documentation/sh$ Но с Вашей помощью всё нашел в интернете! Большое Вам спасибо! ЗЫ Как только в гугл ввел kgdb.txt, сразу нашелся документ  ЗЗЫ А ведь документация-то даже в самом ультрапоследнем ведре тоже сильно устарела, на три года и вообще написана для 2.4.xx  Вот ведь в чем проблема!
--------------------
|
|
|
|
|
Feb 21 2009, 15:37
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(Harbour @ Feb 21 2009, 10:19)  Кто-то или что-то глючит ... В одном из официальных git-репозиториев с kernel.org, который я использую, этого файла НЕТ, а именно в 2.6.29-rc4. Но я нашел этот файл в стабильной версии ядра 2.6.28.6. Так что в скором времени Вы обнаружите, что и у Вас этого файла не будет. А все потому... что документация в этом файле просто катастрофически устарела!Именно поэтому я и создал эту тему, чтобы узнать, где лежит _НОВАЯ_ версия файла документации по работе с KGDB. Хотя на самом деле, в настоящий момент я в какой-то степени разобрался как работать с KGDB, просто мне нужно больше подробностей, чтобы эффективнее использовать эту штуку...
--------------------
|
|
|
|
|
Feb 21 2009, 17:32
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(AVR @ Feb 21 2009, 17:37)  В одном из официальных git-репозиториев с kernel.org, который я использую, этого файла НЕТ, а именно в 2.6.29-rc4. Но я нашел этот файл в стабильной версии ядра 2.6.28.6. Так что в скором времени Вы обнаружите, что и у Вас этого файла не будет. А все потому... что документация в этом файле просто катастрофически устарела!
Именно поэтому я и создал эту тему, чтобы узнать, где лежит _НОВАЯ_ версия файла документации по работе с KGDB. Хотя на самом деле, в настоящий момент я в какой-то степени разобрался как работать с KGDB, просто мне нужно больше подробностей, чтобы эффективнее использовать эту штуку... http://kgdb.linsyssoft.com/
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Feb 22 2009, 10:18
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(amw @ Feb 21 2009, 20:32)  ОК, спасибо, посмотрю  ЗЫ Немного смутило, что там описание для 2.6.7, патч для 2.6.15.5 накладывать надо, сайт с .com а не .org, с ядром документация не поставляется, и многие другие аномалии (хотя, вероятно, тут нет ничего странного, однако меня это ужасно запутало)...
--------------------
|
|
|
|
|
Feb 23 2009, 11:50
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(AVR @ Feb 22 2009, 12:18)  ОК, спасибо, посмотрю  ЗЫ Немного смутило, что там описание для 2.6.7, патч для 2.6.15.5 накладывать надо, сайт с .com а не .org, с ядром документация не поставляется, и многие другие аномалии (хотя, вероятно, тут нет ничего странного, однако меня это ужасно запутало)...  Я по этой доке недавно запускал AT91SAM9260 linux-2.6.24 через UART. Работало. Патчей не накладывал.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
May 3 2009, 20:19
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(amw @ Feb 23 2009, 15:50)  Я по этой доке недавно запускал AT91SAM9260 linux-2.6.24 через UART. Работало. Патчей не накладывал. Можно поинтересоваться подробностями ? Например у меня ядро никак не хочет реагировать на параметр kgdbwait - как ни в чем не бывало нормально загружается, на sysrq-g тоже не реагирует. Посмотрел документацию в ядре: When using kgdboc with a uart, the uart driver must implement two callbacks in the struct uart_ops Example from drivers/8250.c: #ifdef CONFIG_CONSOLE_POLL .poll_get_char = serial8250_get_poll_char, .poll_put_char = serial8250_put_poll_char, #endif Просмотрев свое текущее ядро 2.6.29 и 2.6.24 я не нашел в atmel_serial этих функций. Порт у меня один. Я так понимаю в вашем случае был отдельный порт для gdb - не расшаренный с консолью на dbgu ?
Сообщение отредактировал sasamy - May 3 2009, 20:22
|
|
|
|
|
May 10 2009, 15:11
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(sasamy @ May 3 2009, 23:19)  Можно поинтересоваться подробностями ? Например у меня ядро никак не хочет реагировать на параметр kgdbwait - как ни в чем не бывало нормально загружается, на sysrq-g тоже не реагирует. Посмотрел документацию в ядре:
When using kgdboc with a uart, the uart driver must implement two callbacks in the struct uart_ops Example from drivers/8250.c: #ifdef CONFIG_CONSOLE_POLL .poll_get_char = serial8250_get_poll_char, .poll_put_char = serial8250_put_poll_char, #endif Про это я читал, но не "копал". Отложил "на после" которое не наступило. Цитата Просмотрев свое текущее ядро 2.6.29 и 2.6.24 я не нашел в atmel_serial этих функций. Порт у меня один. Я так понимаю в вашем случае был отдельный порт для gdb - не расшаренный с консолью на dbgu ? Да. DBGU=ttyS0 - KGDB, ttyS1 - console. Заработало сразу. С первой же попытки в дебагаре увидел свой баг и больше KGDB не пользовался  . PS. Недавно запускал KGDB на MIPS через Ethernet. Тоже запустилось сразу. Без патчей. Ядро 2.6.18.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Jun 14 2009, 15:27
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(amw @ May 10 2009, 18:11)  Про это я читал, но не "копал". Отложил "на после" которое не наступило. ... PS. Недавно запускал KGDB на MIPS через Ethernet. Тоже запустилось сразу. Без патчей. Ядро 2.6.18. Меня смущает то что в ванильном ядре 2.6.24 еще не было поддержки kgdb для архитектуры ARM  и до сих пор в атмеловских драйверах нет поддержки poll-функций с которыми работает kgdboc (драйвера для ethernet - kgdboe, к слову, я вообще не нашел в ядре), так что он в принципе не может работать с sam926х без дополнительных патчей. Собственно там надо всего-ничего - дописать эти две нехитрые функции, например я так сделал: Код #ifdef CONFIG_CONSOLE_POLL static int atmel_poll_get_char(struct uart_port *port) { while (!(UART_GET_CSR(port) & ATMEL_US_RXRDY)); return UART_GET_CHAR(port); }
static void atmel_poll_put_char(struct uart_port *port, unsigned char ch) { while (!(UART_GET_CSR(port) & ATMEL_US_TXRDY)); UART_PUT_CHAR(port, ch); } #endif
static struct uart_ops atmel_pops = { .tx_empty = atmel_tx_empty, .set_mctrl = atmel_set_mctrl, .get_mctrl = atmel_get_mctrl, .stop_tx = atmel_stop_tx, .start_tx = atmel_start_tx, .stop_rx = atmel_stop_rx, .enable_ms = atmel_enable_ms, .break_ctl = atmel_break_ctl, .startup = atmel_startup, .shutdown = atmel_shutdown, .flush_buffer = atmel_flush_buffer, .set_termios = atmel_set_termios, .type = atmel_type, .release_port = atmel_release_port, .request_port = atmel_request_port, .config_port = atmel_config_port, .verify_port = atmel_verify_port, .pm = atmel_serial_pm, #ifdef CONFIG_CONSOLE_POLL .poll_get_char = atmel_poll_get_char, .poll_put_char = atmel_poll_put_char, #endif };
Сообщение отредактировал sasamy - Jun 14 2009, 15:35
|
|
|
|
|
Jun 23 2009, 11:03
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(AVR @ Jun 23 2009, 00:49)  Скажите, пжалста, а с этими функциями работает? А может патч атмеловцам отправить?.. Они будут рады и я, и все  Работает, по крайней мере у меня на sam9260, правда я не пробовал sysrq-g - не было надобности, я только через kgdbwait прерывал загрузку ядра, ставил брэкпоинт и отлаживал - мне нужно было посмотреть как probe в моем драйвере отрабатывает, еще как на атмеловском драйвере глюк выростает при передаче буфера больше 4 кб если ему не назначить явно буфер для приема. Можете патч отправить - мне и без него несложно 5 строк дописать
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|