[리눅스커널][디버깅] 크래시 유틸리티로 vmcore를 T32(Trace32)에 로딩하기
By Guillermo Austin Kim | 2019년 3월 13일 |
소개 크래시 유틸리티는 리눅스 커널 개발에서 인기 있는 디버깅 툴입니다. 특히 search 명령어로 메모리 서치를 할 수 있는 막강한 기능을 제공합니다. 하지만 프로세스별 콜스택을 이동하면서 지역변수를 볼 수 있는 기능이 없어 조금 불편합니다. 이번 포스팅에서 vmcore에서 스택 덤프를 추출해 T32 시뮬레이터로 콜스택을 올려 보는 방법을 소개합니다. 크래시 유틸리티로 프로세스 스택 메모리 덤프하기 "./crash64 vmcore vmlinux" 명령어로 크래시 유틸리티를 실행합니다.austindh.kim~/backup/Vmcore_dump$ ./crash64 vmcore vmlinux crash64 7.1.9++Copyright (C) 2002-2017 Red Hat, Inc.Copyrigh
[라즈베리 파이] 설치 - 라즈비안 이미지를 SD카드에 굽기
By Guillermo Austin Kim | 2020년 1월 4일 |
2. 마이크로 SD 카드에 라즈비안 이미지 쓰기 다음으로 마이크로 SD 카드에 라즈비안 이미지를 굽는 프로그램인 Win32 Disk Imager를 내려받기 위해 다음 URL로 접속합시다. 다음과 같은 화면이 나타나면 [Download] 버튼을 클릭합니다. 그림 2.11 Win32 Disk Imager 다운로드 페이지 다음과 같이 페이지가 바뀌고 프로그램 다운로드가 시작됩니다. 그림 2.12 Win32 Disk Imager 다운로드 Win32 Disk Imager의 다운로드가 끝나면 프로그램을 설치한 후 실행합니다. 그림 2.13 Win32 Disk Imager를 실행한 모습 [Image File] 섹션 우측의 파일 불러오기 아이콘( )을 클릭해 다음 그림과 같이 앞에서 다운로드한
[리눅스커널] 슬럽 메모리: set_track() 함수에 전달되는 addr인자의 정체
By Guillermo Austin Kim | 2020년 12월 10일 |
리눅스 커널의 슬럽 관련 디버깅 피쳐를 켜 놓으면, struct track 구조체로 슬럽 오브젝트를 할당하거나 해제할 때의 콜 스택 정보를 저장합니다. 이를 처리하는 핵심 함수는 set_track() 함수인데, 이 함수에 마지막으로 전달되는 인자는 addr입니다. 다음은 set_track() 함수의 구현부인데, 볼드체로 표기된 부분을 봅시다. void set_track(struct kmem_cache *s, void *object, enum track_item alloc, unsigned long addr){ struct track *p = get_track(s, object, alloc); if (addr) {... p->addr = addr; p->cpu = smp_process
[리눅스커널] vmcore를 받기 위한 설정 방식 I (크로뮴 OS)
By Guillermo Austin Kim | 2022년 3월 9일 |
vmcore를 받으려면 적절히 커널 코드를 수정해야 합니다.이번 포스트에서는 크로뮴 OS 환경에서 vmcore를 받는 방법을 공유합니다. 커널 코드 수정 및 설치 과정 1. Ram Reserve second kernel 부팅을 위해서 ram을 reserve해야 합니다.(/proc/iomem 에서 Crash kernel 영역) 이를 위해 커멘드 라인에 crashkernel 아규먼트를 추가해야 합니다. +CONFIG_CMDLINE="crashkernel=512M"+CONFIG_CMDLINE_BOOL=y 위 코드는 커널 컨피그에 커널 커멘드를 추가하는 루틴입니다. 2. kexec tool를 활성화 이어서 kexec tool을 활성화해야 하는데요. 이를 위해 다음과 같은컨피그를 활성화해야 합니다.