디버깅

Linux 커널은 추적 , BPF프로파일링 을 포함하여 문제를 진단하는 많은 메커니즘을 제공합니다. 이러한 기술의 대부분은 GKI(Generic Kernel Image) 바이너리 커널에서 사용할 수 있습니다. 제품을 개발할 때 개발 또는 통합 프로세스에 통합되는 더 많은 도구가 있으며 그 중 일부는 GKI의 일부가 아닌 커널 기능을 필요로 합니다. 대부분의 GKI 기능과 마찬가지로 업스트림 유지 관리자와 협력하여 이러한 기능을 Linux에 추가하는 것이 좋습니다.

공급업체 모듈의 다운스트림 디버그 기능

디버깅 기능은 다른 종류의 기능과 범위가 유사하며 Android 관련 패치 에 설명된 것과 동일한 프로세스를 따라야 합니다.

침입 다운스트림 디버그 기능

일부 유용한 디버그 기능에는 GKI에서 비활성화된 특수 구성 옵션이 필요하므로 특수 커널 빌드가 필요합니다. 이러한 기능은 성능 저하 또는 프로덕션 사용에 대한 부적합으로 인해 비활성화될 수 있지만 특정 유형의 문제를 디버깅하는 데는 필수 불가결합니다. 이러한 도구의 예로는 새니타이저(KASAN, UBSAN), debugfs 및 기타 파트너별 기능 및 도구가 있습니다.

KMI(Kernel Module Interface)에 영향을 미치는 특수한 디버그 지원 커널을 관리하는 방법을 결정하는 것은 사용자의 몫입니다. 일반적인 방법은 내부 디버그 빌드를 수행하고 결과 아티팩트를 내부 고객 또는 다운스트림 개발 파트너에게 전달하는 것입니다. 파트너별 디버그 기능은 Android 관련 패치 에 설명된 지침을 벗어나 GKI 커널에 허용될 수 없으므로 이러한 기능을 모듈로 계속 격리하는 것이 좋습니다.