Debug 3

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 6 - printk와 dump_stack 함수

안녕하세요.  이번 시간은 printk()와 dump_stack()함수에 대해 학습하고 간단하게 디버깅 하는 방법을 알아 보겠습니다.  1. printk 함수  이미 C언어를 접해본 분이라면 printf 함수에 대해 잘 알고 있을 거라 생각됩니다. 함수 끝에 k가 붙은 것처럼 kernel에서 사용하기 위한 함수라는 것을 느낄 수 있을 것입니다.  이미 커널의 수많은 내부 함수에서도 printk 함수를 이용해서 에러 정보를 커널 로그에 출력하고 있습니다.   아래 내용은 책에서 소개한 porcess.c 파일의 일부 내용입니다. __show_regs 함수가 실행되면 레지스터 내용을 커널 로그에 출력하는 일부 코드입니다.   1) printk 형식  int printk(const char *fmt, ...);..

IT/Linux Kernel 2025.03.01

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 5 - 디버깅과 ftrace 예습

안녕하세요.  이번 장에서는 디버깅하는 방법 예습차원에서 중요성, ftrace 내용을 알려주고 있습니다.내용 잘 학습해 보아요. 1. 디버깅의 중요성 1) 임베디드 및 BSP 개발 도중 만나는 대표적인 문제  - 부팅 도중 커널 크래시 발생 - 인터럽트 핸들러를 설정했는데 인터럽트 핸들러가 호출되지 않음 - 시스템 응답 속도가 매우 느려짐 - 파일 복사가 안됨 - 다른 개발자가 작성한 커널 코드를 만날 가능성이 높음   (디바이스 드라이버는 커널함수로 구성되어 있으며 각 서브 시스템을 담당한 개발자가 작성한 코드이기 때문입니다.)  그렇기 때문에 정상적인 동작할 때 몇 가지 내용 파악이 필요   - 함수가 실행될 때 변경되는 자료구조 - 함수가 실행되는 빈도와 실행 시간 - 실행 중인 코드를 어떤 프로세..

IT/Linux Kernel 2025.02.26

Visual Studio(VC++)에서 OpenCV를 사용하기 위한 프로젝트 설정 및 샘플 코드 실행

안녕하세요.   Visual Studio 2019, OpenCV 4.5.3 조금 지난 버전이긴 한데, 현재까지 사용하고 있어서 다음에 설정할 때도 참고하고자  남깁니다.  1. Visual Studio에서 빈 프로젝트 생성  테스트할 프로젝트 이름을 넣습니다.    소스파일 폴더에  새 항목을 선택하고 "Visual C++ -> C++ -> 파일명  main.cpp 생성합니다.    2. OpenCV Library 불러오기 위한 세팅 1) 속성 설정   프로젝트(OpenCV_first)에서 오른쪽 버튼 속성 혹은 상단 메뉴 "프로젝트->OpenCV_first" 속성 선택   2) 속성 페이지 설정  속성 상단 메뉴에서 구성을 "모든 구성", 플랫폼은 "x64"로 변경합니다. debug, release 모..