Skip to content

Kprobes

  • Published on
    커널 디버깅에는 사용자 공간과 결정적으로 다른 제약이 하나 있습니다. 멈춰 세우면 시스템 전체가 멈춘다는 것입니다. 그래서 커널 관측 도구는 대부분 멈추지 않고 들여다보는 쪽으로 발달했습니다. 이 글은 그 도구들을 실제로 쓰는 순서대로 정리합니다. 먼저 모두가 실제로 가장 많이 쓰는 printk와 dmesg를, 그다음 oops 메시지를 소스 줄 번호로 되돌리는 트리 안의 스크립트들을, 이어서 /proc과 /sys라는 커널 자신의 인터페이스를 다룹니다. 본론은 ftrace입니다. tracefs의 제어 파일들과 function_graph 추적기로 호출 그래프를 얻는 절차를 공식 문서 기준으로 설명합니다. 그다음 임의 함수에 동적으로 붙는 kprobes와, 샘플링으로 전체 그림을 잡는 perf를 다루고, eBPF가 이 지형에서 어디에 놓이는지 정리합니다. 마지막은 진짜 중단점이 필요한 경우입니다. QEMU의 gdb 스텁과 커널이 제공하는 lx 명령들, 그리고 물리 장비용 KGDB를 다룹니다.