내 시스템에서 kgdb가 작동하도록 한동안 노력했지만 그 동안에는 작동하지 않았습니다. 2.6.37 git 기반의 TI SDK를 사용하고 있습니다. 직렬을 사용하려고 하면 항상 다음 예외가 발생합니다.
두 가지 모드로 kgdb를 시도했지만 둘 다 실패했습니다.
1) 시작: bootargs에 다음을 추가했습니다.
"kgdboc=ttyO0,115200 kgdbwait".
------------[ cut here ]------------
WARNING: at drivers/serial/serial_core.c:399 uart_get_baud_rate+0x124/0x138()
Modules linked in:
Backtrace:
[<c004ffc4>] (dump_backtrace+0x0/0x110) from [<c03ee140>] (dump_stack+0x18/0x1c)
r6:c04f4d9f r5:0000018f r4:00000000 r3:60000013
2) 콘솔에서:
root@dm814x:~# echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc
kgdb: Registered I/O driver kgdboc.
root@dm814x:~# echo g > /proc/sysrq-trigger
SysRq : DEBUG
Entering KGDB
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c4368000
[00000000] *pgd=84042031, *pte=00000000, *ppte=00000000
Internal error: Oops: 80000007 [#1]
last sysfs file: /sys/module/kgdboc/parameters/kgdboc
KGDB: re-enter exception: ALL breakpoints killed
Backtrace:
커널 구성은 다음을 사용합니다.
CONFIG_KGDB
CONFIG_KGDB_SERIAL
문제가 무엇인지 짐작하셨나요? 어쩌면 적절한 kgdb 패치로 커널을 패치해야 할까요?
답변1
또한 ttyS0을 사용하려고 할 때 널 포인터 역참조가 발생했습니다. ttyS0 대신 ttyO0을 지정해야 한다는 사실이 밝혀졌습니다. 부팅하는 동안 설정에 ttyO0을 썼고 부팅 후 대체 대화형 설정에 ttyS0을 썼는데, 이로 인해 이 주제에 대한 약간의 혼란이 드러날 수 있습니다. 따라서 어떤 tty를 사용하고 있는지 명확히 하십시오. kgdb의 프런트엔드인 KDB에 대한 자세한 내용은 다음을 참조하세요.http://elinux.org/KDB 최소한 kgdb/kdb의 기능을 대부분 사용하도록 커널을 구성하는 방법과 예제를 포함한 자세한 설명이었기 때문에 많은 도움이 되었습니다.