커널디버깅

Category
아이템: 
포스트 갯수3

[리눅스커널][디버깅] 유저공간 abort 발생 시 커널 패닉 유발하는 패치

By Guillermo Austin Kim | 2019년 3월 24일 | 
개발 도중에 유저 공간에서 abort가 발생합니다. 안드로이드 플렛폼에서는 tombstone이 생성돼 레지스터와 콜스택을 확인할 수 있습니다.Revision: '0'ABI: 'arm'pid: 16458, tid: 16513, name: thermal-engine >>> /system/vendor/bin/thermal-engine <<<signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0Cause: null pointer dereference r0 00000000 r1 a73a48c0 r2 8362dec4 r3 8362deec r4 80000000 r5 00000000 r6 83639000 r7 83c35

[리눅스커널][디버깅] T32(Trace32)로 vmlinux 로딩해 시스템 구경하기

By Guillermo Austin Kim | 2019년 3월 13일 | 
T32 시작 명령어 T32 시뮬레이터를 열고 다음 명령어를 입력합시다.sys.cpu cortexa7sys.up 대부분 ARM32 아키텍처는 위 명령어로 T32가 초기화됩니다. T32 명령어로 시스템 점검하기 먼저 커널 섹션 정보를 보겠습니다.y.l.sec__________address________|path\section___________________________|acc|init|physical P:00000000--0000001F|\\vmlinux\.vectors |R-X|L- | P:00001000--000012BF|\\vmlinux\.stubs |R-X|L- | P:C0008000--C

[리눅스커널][디버깅] dump_stack() 함수

By Guillermo Austin Kim | 2019년 3월 13일 | 
dump_stack() 함수 dump_stack() 함수는 콜스택을 커널 로그로 출력합니다. 커널 로그로 콜스택을 보고 싶은 코드에 삽입하면 됩니다. 이 함수를 호출하려면 C 코드 윗부분에 다음과 같이 "linux/kernel.h" 해더 파일을 추가해야 합니다. #include <linux/kernel.h> dump_stack() 함수 선언부를 봅시다.asmlinkage __visible void dump_stack(void); 인자와 반환값 타입이 모두 void입니다. 커널 소스 코드 어디든 dump_stack() 함수만 추가하면 됩니다. dump_stack() 함수로 커널 로그에서 콜스택 확인하기이번엔 dump_stack() 함수를 써서 커널 로그로 콜스택을 볼 수 있는 패치 코드를 소