디버깅
Posts
24 posts[리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기
이번에는 조금 더 재미있는 패치 코드를 같이 볼까요? 다음은 패치 코드의 내용입니다. diff --git a/kernel/workqueue.c b/kernel/workqueue.cindex cd8b61b..128c998 100644--- a/kernel/workqueue.c+++ b/kernel/workqueue.c@@ -49,7 +49,7 @@ #include #include #include -+#include #include "workqueue_internal.h" enum {@@ -2029,6 +2029,18 @@
【펌】【디버깅】 게임계의 레전드인 김포프(Pope Kim)님의 디버깅에 대한 명언
꽃미남이자 게임계의 레전드 개발자이자 엔지니어인 김포프님의 '디버깅'에 대한 명언을 적고자 합니다.출처: 저와 분야는 다르지만 김포프님은 정말 주옥같은 말씀만 하시는 것 같습니다. (1:15) 프로그래머의 자질은 코딩을 해서 제품을 만들 수 있는 능력이다. (2:45) 프로그래머가 갖추어야 할 가장 중요한 능력은 디버깅 스킬이다. (3:22) 디버깅을 잘한다는 것은 남의 코드를 잘 읽고 그 코드 속의 로직을 따질 수 있고 그 로직을 단계별로 나눌 수 있는 것이다. (4:52) 디버깅을 잘하면 남의 코드를 보는 것이 두렵지 않고 이 과정으로 배우는 것이 정말 많다. (5:01) 디버깅을 잘하는 프로그래머를 보면 엄청나게 성장할 것이란 것을 안다. (7:35) 정말 코딩을 잘하는 사람 중에
[리눅스커널][시그널] T32: 시그널 생성 과정 디버깅해보기
이전 포스팅에서 커널이 '시그널'을 어떤 방식으로 처리하는지 살펴봤습니다.이전에 배웠던 내용을 리뷰하는 차원으로 '시그널' 처리 과정을 정리해볼까요? 1. 시그널 생성 시그널을 받은 프로세스의 태스크 디스크립터에 시그널 정보를 써주고 해당 프로세스를 깨운다. 2. 시그널 전달 시그널을 받을 프로세스는 깨어나 시그널을 처리한다. 시그널 처리 과정에 대해 소스 코드를 분석했는데 이번에는 __send_signal() 함수에서 시그널을 생성할 때 바뀌는 시그널 자료구조에 대해서 디버깅해보는 시간을 갖겠습니다. 사실 함수 실행 흐름과 자료구조는 '이와 잇몸'의 관계와 같습니다. 조금 더 구체적으로 말씀드리면 다음과 같겠네요. "함수는 자료구조를 읽고 바꾸기 위해 실행한다." "자료구조
[리눅스커널][디버깅] 편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개
편하게 커널 코드를 수정할 수 있는 디버깅용 Debugfs 드라이버 코드 소개 이전 절까지 리눅스 커널 코드를 수정해서 ftrace나 커널 로그를 출력하는 방법을 소개했습니다. 리눅스 드라이버를 처음 접하거나 커널 코드에 익숙하지 않은 분은 커널 로그를 수정해 커널 빌드를 하는 것은 굉장히 낯선 일입니다. 왜나면 코드를 잘못 입력해 커널이 오동작하면 어떨지 걱정이 앞설 수 있기 때문입니다. 그런데 실수로 커널 코드를 잘못 입력하면 라즈베리파이가 부팅을 못할 수도 있습니다. 필자도 실수로 커널 코드를 잘못 수정한 후 컴파일한 적이 있습니다. 결과 라즈베리파이가 부팅이 안됐습니다. 처음 이런 상황을 겪으니 조금 당황스러웠습니다. 임베디드 리눅스 실전 개발자는 코드를 수정한 다음 커널 부팅이 안 되는 상황



