Kernel Debuging - printk & dump_stack

MySprtlty·2024년 2월 5일
0

Kernel

목록 보기
7/10

🏷️printk

  • 시스템 에러 정보를 커널 로그로 출력한다.

📌서식 지정자

변수 타입서식 지정자
int%d or %x
unsigned int%u or %x
long int%ld or %lx
unsigned long int%lu or %lx
long long int%lld or %llx
unsigned long long int%llu or %llx
size_t%zu or %zx
ssize_t%zd or %zx
s32%d or %x
u32%u or %x
s64%lld or %llx
u64%llu or %llx

📌symbol 출력

  • %pS를 쓰면 함수 주소로 symbol을 출력한다.

📌GCC 컴파일러 제공 매크로

매크로명설명
__func__현재 실행 중인 함수의 이름
__LINE__현재 실행 중인 코드 라인
__builtin_return_address(0)현재 실행 중인 함수를 호출한 함수의 주소

📌주의 사항

  • printk의 호출 빈도를 확인해야 한다.
    • 1초에 수백번 이상 호출되는 함수에 printk를 사용하면 커널 패닉이 일어날 수 있다.

🏷️dump_stack

  • 커널 로그를 통해 콜스택을 출력한다.
  • 함수 선언부
    • asmlinkage __visible void dump_stack(void);

📌주의 사항

  • dump_stack함수가 printk보다 오버헤드가 크다.
profile
2Co 4:7

0개의 댓글