반응형

PostMortemDebugging 3

Linux eBPF 커널 트레이싱 가이드: ftrace 및 perf 대비 오버헤드와 패러다임 비교

내용 요약현상: 고부하 리눅스 시스템에서 기존 방식으로 대량의 커널 이벤트를 트레이싱할 때, 과도한 컨텍스트 스위칭과 디스크 I/O로 인해 시스템 지연 및 패킷 드롭이 발생함.원인: 전통적인 도구들은 커널의 방대한 데이터를 유저 공간으로 일일이 복사한 뒤 필터링하므로, 메모리 대역폭 소모와 컨텍스트 스위칭 병목이 유발됨.해결: eBPF의 인-커널 가상 머신과 Map 구조를 활용해 커널 내부에서 실시간으로 데이터를 요약·필터링함으로써, 유저 공간으로의 복사 오버헤드를 최소화함.리눅스 커널 트레이싱 오버헤드 및 시스템 락업 증상 (Linux Kernel Tracing Overhead & High-Load System Lock-up Symptoms)커널 레벨의 모니터링을 위해 고부하 상용 운영 환경(Produ..

코어 덤프 분석 및 레지스터 스택 프레임 복원 방법: ARM Cortex-M 하드폴트 역추적 가이드

내용 요약현상: 예기치 못한 HardFault 크래시 혹은 HardFault_Handler에서 멈추는 현상.원인: 유효하지 않은 메모리 참조 또는 잘못된 함수 포인터 호출로 Stack Frame을 Push한 상태로 실시간 연결이 끊어지는 문제.해결: 스택에 저장된 PC(Program Counter)와 LR(Link Register) 레지스터의 컨텍스트를 Core Dump 메모리 버퍼에서 역추적.펌웨어 크래시와 코어 덤프 메모리 유실 증상 (Firmware Crash & Core Dump Memory Loss Symptoms)임베디드 장치가 필드에 배포된 이후 발생하는 간헐적인 시스템 다운(System Lock-up) 현상은 실시간 디버거(J-Link, ST-Link)를 연결할 수 없어 원인 파악이 어렵습..

OpenOCD와 GDB를 이용한 펌웨어 크래시 디버깅: 리셋 없는 하드폴트 상태 어태치 가이드

내용 요약현상: MCU 구동 중 시스템이 멈추거나 HardFault_Handler 무한 루프에 빠져 Lock-up 되는 현상.원인: NULL 포인터 참조, 잘못된 메모리 주소 접근, 데이터 오정렬 등으로 레지스터 및 콜 스택(Call Stack) 데이터 유실되는 문제.해결: 리셋하지 않고 OpenOCD의 no_reset 또는 halt 옵션으로 타깃 접속 후, GDB를 Attach하여 SP(Stack Pointer), PC(Program Counter) 레지스터 추적.펌웨어 크래시 및 하드폴트 무한 루프 발생 증상 (Firmware Crash & HardFault_Handler Lock-up Symptoms)임베디드 시스템 필드 테스트나 장기 신뢰성 시험 중, MCU가 아무런 응답을 하지 않고 죽어버리는 ..

반응형