Kernel Lockup Debug 사용법
서버나 임베디드 장비에서 특정 CPU가 갑자기 응답하지 않으면 원인을 찾기 어렵다. 인터럽트조차 처리되지 않을 정도로 멈춰 버리면 로그 한 줄 남기지 못하고 시스템이 그대로 굳어버릴 수도 있다. Linux 커널은 이런…
리눅스 시스템 디버깅
서버나 임베디드 장비에서 특정 CPU가 갑자기 응답하지 않으면 원인을 찾기 어렵다. 인터럽트조차 처리되지 않을 정도로 멈춰 버리면 로그 한 줄 남기지 못하고 시스템이 그대로 굳어버릴 수도 있다. Linux 커널은 이런…
커널 재컴파일 없이 안전하게 실행되는 eBPF 프로그램으로 Linux 커널을 실시간 추적하는 방법. bpftrace, BCC, kprobe, tracepoint 완벽 가이드.
Linux 커널은 printk()로 남긴 메시지를 ring buffer 형태로 저장하고, 이를 /dev/kmsg나 dmesg 명령으로 확인할 수 있게 해준다. 그런데 시스템이 패닉(panic)이나 크래시에 빠지면 이 로그가 디스크에 채 기록되기 전에 시스템이 멈춰버려…
SysRq(System Request)는 리눅스 커널에 내장된 긴급 제어 백도어다. 커널이 응답하지 않거나 시스템이 매우 불안정할 때도, SysRq 키 조합을 통해 시스템을 진단하거나 복구할 수 있도록 도와주는 기능을 한다. 이 글에서는 SysRq의…
임베디드 리눅스 디바이스를 개발할 때, 시리얼 콘솔을 통해 커널 디버깅 또는 긴급 명령을 보내는 경우가 있다. 그중 하나가 Magic SysRq 키 조합을 시리얼 포트를 통해 보내는 기능이다. Magic SysRq는 리눅스…
backtrace는 프로그램의 실행 중 호출된 함수들의 스택을 추적하여 오류나 크래시 발생 시 해당 문제가 발생한 위치와 그 경로를 파악하는 데 유용한 도구이다 .주로 디버깅 시 사용되며, 특히 프로그램이 비정상 종료되었을…
커널 개발에서 메모리 누수는 심각한 문제이다. 메모리 누수는 시스템의 성능을 저하시키고, 장기적으로는 시스템이 불안정해지는 원인이 될 수 있기 때문이다. 이를 해결하기 위해 Linux 커널은 Kernel Memory Leak Detector인 kmemleak 툴을…
커널 개발에서 메모리 버그는 예기치 않은 동작을 일으키고, 보안 취약점으로 이어질 수 있다. 이를 해결하기 위해 Linux 커널에서는 Kernel Address Sanitizer(KASAN)라는 강력한 도구를 제공한다. 이 기능을 커널에서 활성화 하면 메모리…
LeakSanitizer(LSan)은 AddressSanitizer(ASan)에 통합된 메모리 누수를 검출하는 도구이다. 주로 C/C++ 프로그램의 메모리 누수를 탐지하는 데에 사용된다. 이 도구는 GCC와 Clang 컴파일러에서 지원되며, 메모리 할당 및 해제 시점에서 메모리 누수를 감지하여 개발자가…
AddressSanitizer(ASan)는 C/C++ 용 메모리 버그를 감지하는 컴파일러 기반 도구이다. AddressSanitizer는 프로그램을 실행하는 동안 메모리 오류를 식별하여 버그를 조기에 발견하고 수정할 수 있도록 도와준다. 이 글에서는 AddressSanitizer 사용법에 대해 알아본다. ASan…