Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

129199
1107
135857


태그 : Trace32 요약보기전체보기목록닫기

1 2 3 4

[리눅스커널] 익명 페이지 메모리 누수(Memory Leak) 디버깅 - TRACE32

많은 리눅스 시스템 개발자들은 자신이 개발하고 있는 리눅스 커널의 버전이 주류였으면 하는 바램이 있다. 하지만 현실은 다르다. 현재 리눅스 커널의 최신 버전인 4.19(LTS 기준)으로 개발하고 있어도 이전 리눅스 커널 버전에서 다뤘던 자료 구조에 대해 알고 있어야 한다.이번에는 커널 3.10 버전에서 struct anon_vma 구조체와 struct ...

[리눅스커널][인터럽트]인터럽트 벡터에서 스택 푸쉬 확인하기

프로세스가 실행되는 도중 인터럽트가 발생하면 인터럽트 벡터로 프로그램 카운터를 브랜치합니다. 인터럽트 벡터가 가장 먼저 하는 일은 무엇일까요? 바로 실행 중인 프로세스의 레지스터 세트를 스택 공간에 저장(푸시)하는 것입니다. 그렇다면 인터럽트 벡터에서 이런 동작을 수행하는 이유는 무엇일까요? 프로세스의 실행 정보를 백업하기 위해서입니다. 이번 ...

[리눅스커널][디버깅] 슬럽(슬랩) 캐시 오브젝트 T32로 메모리 디버깅하기

리눅스 커널 동적 메모리 할당을 위해 슬럽 캐시를 씁니다.이번 시간에서는 kmalloc-64 슬럽 캐시 자료 구조를 통해 kmalloc-64 슬럽 오브젝트를 확인하는 방법을 소개합니다.슬럽 캐시 확인하기먼저 kmalloc-size 타입 슬럽 캐시를 관리하는 kmalloc_caches 전역 변수를 보겠습니다.kmalloc_caches 전역 변수의 세부 필...

[리눅스커널] 임베디드 디버거 전설 TRACE32

<< 임베디드 디버거 전설 TRACE32 >>TRACE32(T32)는 임베디드 소프트웨어에서 많이 사용되는 전설적인 디버깅 프로그램입니다. 다른 RTOS 개발에도 활용도가 높은 디버깅 프로그램으로서 대부분의 임베디드 개발자는 TRACE32를 사용할 줄 알고, 많은 고수 개발자들은 T32를 잘 다룹니다. 실전 개발에서 활용도...

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

T32 시작 명령어 T32 시뮬레이터를 열고 다음 명령어를 입력합시다.sys.cpu cortexa7sys.up  대부분 ARM32 아키텍처는 위 명령어로 T32가 초기화됩니다.T32 명령어로 시스템 점검하기먼저 커널 섹션 정보를 보겠습니다.y.l.sec__________address________|path\section____...

[리눅스커널][디버깅] 크래시 유틸리티로 vmcore를 T32(Trace32)에 로딩하기

소개 크래시 유틸리티는 리눅스 커널 개발에서 인기 있는 디버깅 툴입니다. 특히 search 명령어로 메모리 서치를 할 수 있는 막강한 기능을 제공합니다. 하지만 프로세스별 콜스택을 이동하면서 지역변수를 볼 수 있는 기능이 없어 조금 불편합니다.이번 포스팅에서 vmcore에서 스택 덤프를 추출해 T32 시뮬레이터로 콜스택을 올려 보는 방...

[리눅스커널] 시스템 콜: 시스템 콜 테이블이란

시스템 콜 테이블은 시스템 콜 번호와 시스템 콜 핸들러 함수 주소로 구성되어 있습니다.시스템 콜 번호 시스템 콜 핸들러 함수 위치1 sys_exit kernel/exit.c2 sys_fork kernel/fork.c3 sys_read fs/read_write.c4 sys_write fs/read_write.c5 sys_open fs/open.c6 sys...

[안드로이드][리눅스커널] 시그널 - 유저 공간 abort(SIGABRT) 시 동작 시 흐름

유저 공간에서 zygote가 강제 종료되면서 부팅을 못하는 상황입니다. 커널 로그로 아래 메시지를 볼 수 있습니다.아래 로그는 init 프로세스가 zygote에 SIGABRT(6) 시그널을 전달해서 zygote를 종료시키고 있습니다.[   46.116831 / 01-02 01:20:24.859][0] init: Service 'zygo...

[리눅스커널] 프로세스 태스트 디스크립터 디버깅: 스레드와 스레드 그룹

T32로 프로세스 목록을 보면 다음과 같이 계층 구조를 볼 수 있다.magic___|___command_________|#thr|state_____|spaceid|pids_|C1A171B8|   swapper/0       | 420|current   | 0000  | 0....

[리눅스커널][Trace32] wakelock 디버깅 - container_of

[crash-utility] wakelock 디버깅(rbtree: wakelocks_tree)[crash-utility]wakelock - rbtree debugging(디버깅) [리눅스커널][Trace32] wakelock 디버깅 - container_of[Kernel] wakelock debug patch 이번 시간에는 wakeup...
1 2 3 4