Core Dump 생성 메커니즘 — kernel의 dump path 분석
Linux core dump가 어떻게 만들어지나. ulimit, core_pattern, dumpable, systemd-coredump.
개발 도구 — Vim, 디버거, 프로파일러, 빌드
Linux core dump가 어떻게 만들어지나. ulimit, core_pattern, dumpable, systemd-coredump.
core dump의 내부 구조. PT_NOTE/PT_LOAD, NT_PRSTATUS, NT_FILE, NT_AUXV.
core 열기, siginfo 해독, 콜스택 분석, 변수 검사, 자주 만나는 패턴.
build-id로 자동 debuginfo 매칭, Breakpad/crashpad minidump, CI 자동 사후 분석.
CXL 디바이스가 fail한 후 core dump에서 device state·mailbox 명령 이력·NUMA 토폴로지를 복원하는 분석 흐름.
CXL 2.0/3.x fabric에서 multi-host pooled 디바이스 fail 분석 — Fabric Manager log·LD 상태·cross-host correlation.
프로세스 메모리의 실제 정체. VSS vs RSS vs PSS, /proc/[pid]/{status,smaps}.
Valgrind보다 빠른 heap profiler. KDE 출신, 운영 환경에도 적용 가능.
표준 glibc malloc 대체 + 내장 profiler. pprof로 시각화.
별 라이브러리 없이 glibc 만으로 메모리 디버깅. mtrace, mcheck, MALLOC_CHECK_.
장기 실행 서비스의 누수 추적. /proc 모니터링, cgroup memory.max, OOM 회피.
CXL.mem 디바이스 메모리 상태 진단 — cxl-cli·poison list·event log로 RAS 이벤트 추적, NUMA node별 사용량 분석.
DDR + CXL.mem 계층화 환경에서 DAMON·DAMOS 동작 분석 — page promotion/demotion 추적, hot/cold 분류 디버깅.
user-space와 kernel-space 디버깅의 차이. /proc, kallsyms, kernel debug info.
커널 로깅의 모든 것. log level, ring buffer, ratelimit, 런타임 토글.
함수 단위 trace, 이벤트 trace, 정적 tracepoint, function graph.
kprobe/uprobe/tracepoint 위에 표현력 있는 trace 언어. bpftrace 원-라이너부터 BCC까지.
별 머신 또는 시리얼로 커널을 step-debug. kgdb 셋업, gdb 연결, 실전 흐름.
kdump로 만든 vmcore를 사후 분석. crash 명령, drgn Python API, 실전 흐름.
dmesg 한 줄로 정확한 위치 찾기. RIP, Call Trace, BUG, Tainted 디코딩.
Linux drivers/cxl/ 서브시스템 디버깅 — ftrace로 probe 흐름 추적, bpftrace로 mailbox 명령 캡처, drgn으로 커널 상태 검사.
Linux kernel drivers/cxl/ 디렉터리 — 모듈별 entry point·핵심 자료구조·sysfs interface 코드 워크스루.
GDB가 원격 스텁과 주고받는 ASCII 패킷의 모든 것. 패킷 형식, qSupported 협상, vCont, 멀티 패킷, RLE.
TAP 상태 머신, SWD 패킷, ARM CoreSight (DAP/FPB/DWT/ITM/ETM) 회로 구조.
TCL 인터프리터, target/interface 설정, flash driver, custom 명령, multi-core.
JLinkGDBServer, JLinkExe, J-Run, J-Trace, Unlimited Flash BP, RTT, Ozone.
ELF의 LMA/VMA, 링커 스크립트, MAP 파일로 메모리 진단, startup 코드의 정체.
printf 없이 펌웨어 로그·trace 빼내기. 다섯 가지 방법 비교 + 코드 예제.
FreeRTOS/Zephyr task 콜스택, Hardfault 분석, MPU, 신호 무결성, 보안 lock 해제.
CXL 링크가 안 올라올 때 LTSSM 상태 분석, Protocol Analyzer 캡처, lspci·cxl-cli·dmesg 진단 흐름.
CXL 디바이스의 RAS(Reliability·Availability·Serviceability) 이벤트와 poison list·media error를 추적하는 진단 흐름.
GNU Make의 역할, 설치 방법, 첫 Makefile 작성과 실행.
Makefile 규칙의 구성 요소와 동작 방식 — 다중 타겟, order-only, 레시피 접두사, 이중 콜론까지.
Make 변수의 두 가지 확장 방식, 자동 변수, 우선순위 — 같은 코드가 미묘하게 다르게 도는 9할의 원인.
% 한 글자로 100개의 규칙을 줄이는 패턴 규칙, Make 내장 암시적 규칙, 그리고 둘의 충돌·우선순위.
내장 함수로 텍스트·파일·조건을 다루기 — wildcard / patsubst / filter / shell / foreach / call / eval.
파싱 시점 조건 분기, Makefile 분할, 그리고 -MMD -MP로 헤더 의존성을 자동 추적하는 표준 패턴.
기본 C/C++부터 라이브러리, 크로스 컴파일, 테스트 통합까지 — 실제 프로젝트에 그대로 쓰는 Makefile 패턴.
왜 메타 빌드 시스템이 필요한가, CMake가 그 자리에서 무엇을 하는가, 그리고 5줄 짜리 첫 프로젝트.
CMake 스크립트의 기본 문법: 변수, 리스트, 조건문, 반복문, 함수.
Modern CMake의 핵심: 타겟 중심 접근법과 라이브러리 생성.
사용자 설정 가능한 빌드 옵션과 CMake 캐시 시스템.
외부 라이브러리 탐색, FetchContent, 그리고 의존성 관리.
CMake 테스트 프레임워크 CTest와 Google Test, Catch2 연동 방법.
install 명령으로 빌드 결과물 배포, CPack으로 플랫폼별 패키지 생성.
타겟 중심 접근법, 피해야 할 안티패턴, 대규모 프로젝트 구성 전략.
Modern CMake의 고급 도구 모음 — 자주 안 보이지만 실무에서 결정적인 기능들.
표준 라이브러리 pdb. breakpoint(), 핵심 명령, ipdb, postmortem.
debugpy로 IDE 디버깅, 원격 프로세스 attach, justMyCode, 멀티프로세스.
코루틴 콜스택 추적, asyncio debug=True, slow callback, race condition.
py-spy로 콜스택 dump, 샘플링 프로파일링, flamegraph, 외부 attach.
세그폴트 트레이스백, 메모리 할당 추적, 객체 그래프 시각화.
C/C++ 런타임 검사 도구 Sanitizer 계열의 역할, 종류별 선택, 실무 도입 순서.
황금 조합 -fsanitize=address,undefined를 실제로 켜고 운영하는 자세한 방법 — 옵션, 환경 변수, suppression, 흔한 오탐.
LeakSanitizer로 메모리 누수 추적 — 보고서 해석, suppression, 일회성·반복 분석 패턴.
ThreadSanitizer로 멀티스레드 버그 추적 — happens-before 모델, false positive, atomic·mutex 통합.
Sanitizer 빌드를 프로젝트에 자연스럽게 통합 — CMake 옵션, GitHub Actions, GitLab CI 실전 예시.
Sanitizer 시대에도 Valgrind가 살아남은 이유, 세 핵심 도구의 역할, 도입 자리.
Memcheck의 모든 핵심 옵션 — leak-check, track-origins, error-limit, 그리고 비용 vs 정확도 트레이드오프.
Memcheck의 네 가지 누수 분류 — definitely/indirectly/possibly/still reachable — 정확한 의미와 우선순위.
Valgrind의 두 동시성 분석 도구 비교 — Helgrind의 락 추적과 DRD의 vector clock, 언제 무엇을.
Valgrind suppression 문법, 외부 라이브러리 우회, Sanitizer와의 분담, CI 통합 실전.
GDB Python 인터프리터, 핵심 객체(Value/Type/Frame/Symbol), 디버기 데이터 조작.
사용자 정의 명령, $name(...) 함수, stop hook, 자동 BP 액션 패턴.
to_string / children / display_hint, MI 출력, auto-load, libstdc++ printer 분석.
Frame filter, FrameDecorator로 콜스택 변형, custom unwinder로 JIT 코드 추적.
IDE ↔ 디버거 표준 — GDB/MI와 Debug Adapter Protocol의 정체.
터미널부터 IDE까지. 내장 TUI, cgdb, gdb-dashboard, gef/pwndbg, VSCode, nvim-dap, Cortex-Debug 비교.
네이티브 디버거의 메커니즘, gdb·lldb 차이, 설치, 첫 세션.
디버거에서 매일 쓰는 핵심 명령 10가지 — 정확한 의미와 자주 쓰는 변형.
print 만으로 부족한 자리들 — x/memory examine, ptype, STL 컨테이너, pretty printer.
bt·frame·up·down — 호출 스택 분석, 프레임 안 변수 조사, 인라인 함수 처리.
조건부 break, watchpoint(변수 변경 추적), catchpoint, hardware vs software.
thread / process apply. scheduler-locking. follow-fork. rr 시간 역행 디버깅.
ulimit / core_pattern. gdb -c. ELF core 포맷, NT_PRSTATUS, systemd-coredump.
다른 머신·MCU를 GDB로. RSP, gdbserver, OpenOCD, J-Link, JTAG/SWD, ARM CoreSight.
GDB / LLDB Python API. pretty-printer 작성, 커스텀 명령, 자동화, MI.
TUI 모드, cgdb, gdb-dashboard, gef/pwndbg, VSCode, nvim-dap, DAP 프로토콜.
STL pretty-printers, -O2 디버깅, .gdbinit 추천, rr time-travel. 시리즈 마무리.
DWARF 표준, DIE / abbrev / line / location, expression VM, CFI, split-DWARF.
ELF 헤더, Program Header / Section Header, dynamic linking, build-id.
DWARF의 정체. DIE/abbrev 인코딩, 컴파일 유닛, TAG/AT/FORM 카탈로그.
DWARF 줄 정보의 정체. 상태 머신, 표준/확장 opcode, file table, addr2line의 내부.
변수가 어디 있는지의 표현. 스택 머신 opcode, location list, DW_OP_entry_value.
콜스택 풀기의 정체. CIE/FDE, CFA, register rule, .eh_frame_hdr 이진 탐색.
큰 디버그 정보 다루기. 분리·압축·네트워크 다운로드·자체 도구 작성.
Silicon 없이 driver 검증 — co-simulation의 의미.
Import·export·data type — SV와 C 사이의 다리.
RTL → C++ — driver code와 link되는 가장 빠른 simulator.
Python coroutine으로 RTL testbench — productivity gain.
Cycle-accurate 너머 — high-speed virtual platform.
Driver와 RTL 사이의 protocol-aware adapter.
UVM testbench의 reference model을 C로 — driver와 공유.
Verilator + DPI-C + Linux driver — 통합 cosim flow.