디버깅
Posts
24 posts[Kernel][Stability] 스택 오염(Stack Corruption) 디버깅
아래 글에서 stack canary에 대한 내용을 다뤘습니다. 스택을 깨는 지 점검하는 루틴인데요.http://rousalome.egloos.com/9965540#216009 이번에는 다른 디버깅 패치를 작성해서 어떤 루틴이 스택 오염을 시켰는지 점검해보겠습니다. 우선 스택이 깨지는 순서를 살펴보겠습니다. 1. 아래 함수가 처음 실행될 때 순서로 스택을 푸쉬합니다.current_sp-0x1c--- R14 // 0xC06FAE8C 실행 시 스택 주소(스택 푸쉬 후)current_sp-0x18--- R3current_sp-0x14--- R4 current_sp-0x10--- R11current_sp-0xc---- R12current_sp-0x8---- LRcurrent_sp-0x4---- PC
Runqueue(런큐) Timestamp(실행 시간) 확인
보통 커널 크래시나 와치독 리셋으로 시스템이 다운된 경우 세밀하게 디버깅해야 할 때가 있어요.그런데 가끔 각 프로세스가 마지막에 어떤 순서로 실행이 됐는지 확인하고 싶을 경우가 가끔 있거든요.이 순서가 가끔 정말 중요한 순간이 가끔 있어요. 아래는 런큐에서 돌고 있는 프로세스 목록이거든요. 그럼 각각 프로세스가 어떤 순서로 실행이 되었는지 알 수 있을까요?crash64> runq -m CPU 0: [0 07:36:22.901] PID: 585 TASK: ffffffc071eb8b80 COMMAND: "android.hardwar" CPU 1: [0 07:36:22.901] PID: 726 TASK: ffffffc0f6e3f300 COMMAND: "DispSync" CPU 2: [0
워크큐(Workqueue) - struct work_struct->data
workqueue를 디버깅할 때 여러 변수를 점검해야 하거든요.그 중에 하나가 struct work_struct->data 변수이거든요 일단 데이터 구조체는 아주 명령어로 볼 수 있죠.crash64> struct -o work_structstruct work_struct { [0] atomic_long_t data; [8] struct list_head entry; [24] work_func_t func;} 이번 기회에 struct work_struct->data 값들을 정리하려고 하는데요.결과는 아래와 같아요. 가끔 디버깅 할 때 아래 매크로 값들을 찾다가 짜증날 때가 가끔 있거든요.workque macro Hexa ValueWORK_STRUCT_COLOR_BITS 0x4
[디버깅 로그] inspectdb 를 이용한 Django 모델 필드 인식 오류 해결
가끔, Database 를 만든뒤 이를 Django 모델로 선언하고 ORM 문법에 따라 프로그래밍을 하다보면 model object 에서 해당 필드가 마치 없는것처럼 에러를 내뱉는 경우가 있다. model object 의 필드 참조에 대하여 AttributeError 혹은 KeyError 가 발생할때 이다. 이럴때 사용하는 방법은, inspectdb 명령어를 이용하여 필드 선언방식에 도움을 받는것 !!! inspectdb 가 뭔짓을 하는 명령어 인지는 여기 를 가면 확인할 수 있다간단히 말해, 기존 테이블 필드 정보를 자동으로 Django model 파일로 생성해주는 기능!! 모델을 직접 선언하기 귀찮을때 사용하면 딱인데,, 문제가 하나 있다.필드의 모든 세부 사항들 까지 다 적용해주진 않는 다는



