태그: Valgrind
9편
-
C++ 메모리 누수 심화 디버깅 | 힙 프로파일링·패턴·스마트포인터·순환참조·프로덕션
Valgrind Memcheck와 AddressSanitizer·LeakSanitizer가 무엇을 추적하는지, still reachable 같은 리포트를 어떻게 해석할지부터 unique_ptr::release, 중복 shared_ptr 생성, enable_shared_from_this 오용처럼 스마트 포인터가 숨기는 누수의 진단법을 다룹니다.
-
C++ 프로파일러 비교: perf 화염 그래프, gprof, Valgrind Callgrind, VTune, Tracy
서버 병목을 찾을 때 perf 화염 그래프, gprof 호출 그래프, Valgrind Callgrind·Cachegrind, Intel VTune, Tracy 중 무엇을 언제 쓸지 비교합니다. 각 도구의 설치와 명령, 출력 해석법을 같은 벤치마크 프로그램으로 따라가며 익힙니다.
-
메모리 누수 찾기: 프로파일러 선택과 재현 시나리오 | Valgrind·ASan·Heaptrack
메모리가 계속 늘어나는 서비스에서 C++는 ASan·LSan, Valgrind, Heaptrack, Python은 tracemalloc과 memory_profiler, Node.js는 힙 스냅샷으로 누수를 찾는 방법을 보여줍니다. 재현 시나리오를 문서화하는 법과 누수와 단편화의 구분도 다룹니다.
-
C++ 메모리 누수 디버깅 실전 사례 | 프로덕션 서버 메모리 사용량 급증 해결기
계속 늘어나는 C++ 서버 메모리를 Prometheus 지표로 확인하고 Valgrind, ASan, Heaptrack을 차례로 써서 누적된 이벤트 리스너라는 원인을 찾아낸 과정입니다. RAII와 스마트 포인터로 고친 뒤 CI에 ASan을 넣어 재발을 막는 방법까지 담았습니다.
-
C++ 메모리 누수 찾기: Valgrind·ASan·CRT 디버그 힙 사용법과 누수 패턴
Valgrind memcheck와 AddressSanitizer, Visual Studio CRT 디버그 힙으로 C++ 메모리 누수를 찾는 방법을 설명하고, new/delete 불일치, 예외 경로, shared_ptr 순환 참조, 컨테이너에 저장한 포인터 같은 누수 원인과 RAII 해결법을 다룹니다.
-
Valgrind Memcheck로 C++ 메모리 누수 찾아내기
C++ Valgrind Memcheck로 메모리 누수·힙 버퍼 오버런·초기화 안 된 값을 찾는 방법. definitely lost·invalid read/write·uninitialised value 출력 해석, suppression 파일 작성, CI 통합까지 예제로 설명합니다.
-
C++ 프로파일링: perf·Tracy·VTune 도구 비교와 병목 찾는 절차
추측으로 최적화하다 시간을 날리지 않도록 std::chrono 측정에서 시작해 perf, gprof, Callgrind, Tracy, VTune 같은 도구로 핫스팟을 찾는 절차를 보여줍니다. Flame Graph 생성, 측정과 재측정을 반복하는 흐름, 벤치마크할 때 빠지기 쉬운 함정도 다룹니다.
-
C++ 스택 vs 힙 | 재귀에서 프로그램이 죽는 이유와 스택 오버플로우 사례
깊은 재귀로 프로그램이 갑자기 죽는 사례에서 출발해 스택과 힙이 메모리에서 어떻게 다르게 동작하는지, 힙 할당이 느린 이유, delete와 delete[]를 헷갈리는 실수, 언제 스택을 쓰고 언제 힙에 할당할지 판단하는 기준을 예제로 설명합니다.
-
C++ 메모리 누수: 흔한 5가지 패턴과 Valgrind·ASan으로 찾는 방법
메모리 누수로 서버가 멈춘 사례를 따라가며 이중 삭제, 댕글링 포인터, 누수, delete와 delete[] 혼동, 예외 안전성 무시 5가지 패턴을 재현하고, early return과 컨테이너 포인터 누수를 Valgrind와 AddressSanitizer로 찾아내는 과정을 보여줍니다.