디버깅

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

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

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

방해가 되는 다운스트림 디버그 기능

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

커널 모듈 인터페이스(KMI)에 영향을 미치는 특수 디버그 지원 커널을 관리하는 방법은 개발자가 결정합니다. 일반적인 방법은 내부 디버그 빌드를 생성하고 결과 아티팩트를 내부 고객 또는 다운스트림 개발 파트너에게 제공하는 것입니다. 파트너별 디버그 기능은 Android 관련 패치에서 설명한 가이드라인을 벗어나 GKI 커널에 허용될 수 없으므로 이러한 기능을 모듈로 계속 분리하는 것이 좋습니다.