T32

포스트: 19|조회수: 0|TERM
Items

Posts

19 posts

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

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

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

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

[라즈베리파이] 시스템 콜 테이블이란

Guillermo Austin Kim|2018년 11월 13일

시스템 콜 테이블을 알아보기 전 POSIX 규약에 대해서 점검합시다.POSIX(Portable Operating System Interface)란 응용 어플리케이션이 다양한 유닉스 계열 운영체제에서 호환성을 유지하면서 실행할 수 있게 만든 표준 규약입니다. 대표적인 POSIX 규약은 리눅스 저수준 함수, 시스템 콜 테이블, 프로세스 통신용으로 쓰는 시그널 번호입니다. 응용 어플리케이션은 각자 알고리즘과 구현 시나리오에 집중하고 리눅스 저수준 함수 세부 구현 내역과 리눅스 커널 동작에 신경을 쓸 필요가 없습니다. 리눅스 POSIX 표준으로 시스템콜 번호와 핸들러는 지정되어 있습니다. 시스템콜 테이블은 시스템콜 번호를 인덱스로 시스템 콜 핸들러를 분기시키는 역할을 수행합니다. 시스템 콜 테이블은 시스템 콜

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

Guillermo Austin Kim|2018년 11월 7일

유저 공간에서 zygote가 강제 종료되면서 부팅을 못하는 상황입니다. 커널 로그로 아래 메시지를 볼 수 있습니다.아래 로그는 init 프로세스가 zygote에 SIGABRT(6) 시그널을 전달해서 zygote를 종료시키고 있습니다.[ 46.116831 / 01-02 01:20:24.859][0] init: Service 'zygote' (pid 1777) killed by signal 6[ 46.124107 / 01-02 01:20:24.869][1] init: Service 'zygote' (pid 1777) killing any children in process group 그럼 이 동작을 할 때 커널 관점으로 어떤 코드가 수행되는지 살펴보겠습니다. zygote는 커널 공간에서 "main"