Guillermo Austin Kim
Posts
998 posts[리눅스커널] 커널 디버깅과 코드 학습: ftrace란
printk와 dump_stack을 활용해 커널 디버깅을 하던 리눅스 커널 개발자들은 여러 불편함을 느끼기 시작했습니다. 즉, 다음과 같은 요건을 충족하는 커널 디버깅 기능이 있으면 좋겠다고 생각하게 됩니다. 함수 호출 흐름을 소스코드를 수정하지 않고도 보고 싶다. 커널 세부 실행 정보를 출력해 줬으면 좋겠다. 1초에 수십 번 호출해도 성능에 부담을 주지 않았으면 좋겠다. 커널 로그도 함께 보고 싶다. 이런 요구사항을 모두 충족하는 커널 디버깅 기능이 바로 ftrace입니다. ftrace는 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복과도 같은데, 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ---트레이서는 strace나 ltrace처럼 리눅스
[리눅스커널] 커널 디버깅과 코드 학습: 디버깅과 코드 학습 능력
디버깅과 코드 학습 능력 디버깅하면서 리눅스 커널 코드를 함께 분석하면 다음과 같은 정보를 더 얻을 수 있습니다. 분석 대상 코드가 동작하는 콜스택 함수가 실행될 때 변경되는 자료구조 함수가 실행되는 빈도와 실행 시각 분석 대상 코드를 실행하는 프로세스 대부분 리눅스 커널을 공부할 때는 커널 소스코드를 열어 봅니다. 코드를 이해하는 능력은 리눅스 개발자의 기본 소양이므로 소스를 이해하는 능력은 중요합니다. 하지만 소스코드를 분석하면 실행 흐름을 보는 시야가 좁아집니다. 그래서 코드 분석과 함께 함수 실행 흐름과 실행 빈도를 알 필요가 있습니다. 커널 소스코드만 분석한 분이 있다고 가정해 봅시다. 또 다른 분은 커널 디버깅과 함께 커널 코드를 함께 분석했습니다. 둘 중에서 누가 더 빨리 커널
[라즈베리 파이] 라즈비안 리눅스 커널 빌드하고 설치하기
라즈비안 리눅스 커널 빌드 라즈비안의 커널 소스를 내려받았으니 이제 소스를 빌드하는 방법을 알아볼 차례입니다. 참고로 아래의 라즈베리 파이 홈페이지에 가면 커널을 빌드하는 방법을 확인할 수 있습니다. 이 페이지에서 ‘Raspberry Pi 2, Pi 3, Pi 3+, and Compute Module 3 default build configuration’라고 적힌 부분을 아래 명령어를 차례로 입력하면 커널을 빌드하기 위한 설정을 진행할 수 있습니다. cd linuxKERNEL=kernel7make bcm2709_defconfig 이어서 그 아래의 ‘Building’ 부분에 나온 아래 명령어를 통해 본격적인 커널 빌드를 진행합니다. make -j4 zImage modules dtbssudo ma
[SW 에세이] 생각이 낡은 SW 개발자들(1) - 노력할 필요가 없다
이번 시간에는 "생각이 낡은 SW 개발자"란 주제로 포스팅을 해보려 합니다. "생각이 낡은 SW 개발자"는 무엇을 의미할까요? 다음과 같은 부류의 개발자를 뜻합니다. * "SW 개발자로써 자기 개발을 하지 않거나 자기 개발을 할 필요가 없다고 확신하는 개발자" * "열심히 해도 현실은 나아지지 않는다고 확신하는 개발자" 이런 부류의 개발자가 어떤 생각을 하고 행동하는지 조금 더 알아볼까요? SW 개발은 제품의 일부분이라는 점을 강조하며 배울 필요가 없다고 생각한다 제품을 보는 관점에 따라 SW 개발은 제품 개발의 일부분으로 볼 수 있습니다. 물론 이 관점이 틀렸다고 말하려는 게 아닙니다. 기획, 영업, 생산부터 품질 그리고 하드웨어 부서까지 다양한 부서들이 힘을 모아 출시하는 것이 제품(Pr
[리눅스커널] 새로운 ftrace 이벤트 생성하기: TRACE_SYSTEM 매크로 설정
해더 파일의 이름과 TRACE_SYSTEM 매크로가 일치해야 함 아래와 같이 매크로를 지정했다면, 'include/trace/events/hvc.h' 해더 파일을 찾는다.#define TRACE_SYSTEM hvc 아래는 TRACE_SYSTEM 매크로 이름에 해당하는 헤더 파일이 없을 때 컴파일하면 출력되는 메시지이다. /home001/austin.kim/src/rpi_dev_code/last_rpi_src/linux/include/trace/define_trace.h:89:43: fatal error: trace/events/hvc.h: No such file or directory #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)



