커널 디버깅

커널 디버깅

일부 Linux 장치 드라이버 프로세스와 일부 최소 커널 프로세스(스레드 및 컨텍스트 전환 및 인터럽트 관리)를 연구하고 싶습니다.

리눅스 커널을 디버깅하는 방법은 무엇입니까? 이를 수행하기 위한 기본 단계는 무엇입니까?

최근에 나는 새로운 커널(2.6.34.7)을 2.6.29 커널을 실행하는 머신에 성공적으로 컴파일하고 통합했습니다.

답변1

그것은 당신이 정말로 필요한 것에 달려 있습니다. 아마도 간단한 printk()기능으로 시작하는 것이 좋을 것입니다. /proc커널에서 유용한 정보를 얻는 데 사용할 수 있는 인터페이스 도 있습니다 .

좀 더 복잡한 것이 필요하다면 KGDB(커널 디버거)를 사용하세요.

답변2

커널 소스 폴더로 이동하여 Documentation/폴더 내부를 살펴보세요. kernel-parameters.txt디버깅 참조용 ​​파일을 찾아보는 것부터 시작하세요 .

커널이 CONFIG_DEBUG_KERNEL옵션 세트로 컴파일 된 경우 loglevel커널 메시지의 자세한 정도는 부팅 옵션을 통해 쉽게 조정할 수 있습니다.

답변3

KGDB 외에 다른 옵션은 QEMU 및 GDB를 사용하여 커널을 디버깅하는 것입니다. KGDB와 달리 QEMU-GDB 조합에는 머신이 하나만 필요합니다.

관련 정보