GDB를 사용하여 Linux 모듈을 원격으로 디버깅하는 방법은 무엇입니까?

GDB를 사용하여 Linux 모듈을 원격으로 디버깅하는 방법은 무엇입니까?

인터넷에서 검색했지만 gdb를 사용하여 Linux 모듈을 원격으로 디버깅하는 올바른 단계를 찾을 수 없습니다. 나는 qemu를 시도하고 있지만 거기에서 많은 문제에 직면하고 있습니다. 사용할 수 있는 다른 도구가 있나요? 그렇지 않은 경우 Linux 모듈을 원격으로 디버깅하는 올바른 단계를 알려주실 수 있나요?

답변1

그렇게 어렵지는 않습니다. ~에서공식 커널 문서("만왕"으로 검색하지 마세요. 공식 문서를 검색하시면 덜 나쁜 정보를 찾으실 수 있습니다):

  1. 커널을 활성화 하고 KGBD빌드 프로세스 중에 구성 옵션이 CONFIG_GDB_SCRIPTS켜져 있는지 확인하십시오. (커널 패키지를 빌드하는 방법에 대한 자세한 내용은 CentOS 문서를 참조하세요. 이것이 가장 쉬운 방법입니다.)
    • 달리기make scripts_gdb
  2. 로컬에서 커널 기호를 쉽게 이해하려면 이 커널( vmlinux)을 호스트 시스템에 복사하세요.
  3. QEMU에서 선택한 Linux 배포판을 실행하세요.
    • QEMU의 GDB 스텁을 활성화하고 포트에서 수신 대기합니다. 즉, 사용하려는 포트 번호(1024보다 크고 21⁶보다 작아야 함)를 사용하여 qemu실행합니다 .-gdb tcp::$SOMEPORT$SOMEPORT또는, -s와 동일하게 실행됩니다 -gdb tcp::1234.
    • -S옵션을 제공하여 QEMU가 머신을 즉시 시작하지 않도록 보장
  4. 호스트 컴퓨터에서 다음을 실행합니다.gdb /path/to/the/kernel/vmlinux
  5. 에서 gdbQEMU 스텁에 다음을 추가합니다 target remote :$SOMEPORT.
  6. 이제 다음을 실행 continue하여 가상 머신을 시작할 수 있습니다.

관련 정보