C/C++ 디자인 패턴 (12) — 프록시(Proxy)

수백 MB짜리 PDF를 목록에 띄울 때마다 전부 파싱하면 화면이 멈춘다. 일부 페이지는 관리자만 봐야 하고, 같은 페이지를 반복해서 읽는다면 결과를 재사용하고 싶다. 이런 요구를 문서 클래스 자체에 넣으면 본래 역할과…

Continue ReadingC/C++ 디자인 패턴 (12) — 프록시(Proxy)

C++ 예제로 배우는 소프트웨어 설계 기법 (13) — 플러그인(Plug-in)

5편의 자기 등록 팩토리는 새 도형 파일을 추가해도 기존 코드를 고치지 않았지만, 프로그램은 다시 빌드해야 했다. 플러그인(Plug-in)은 여기서 한 걸음 더 나아가 이미 배포된 호스트 프로그램에 공유 라이브러리(.so)를 실행 중에…

Continue ReadingC++ 예제로 배우는 소프트웨어 설계 기법 (13) — 플러그인(Plug-in)

LD_PRELOAD로 라이브러리 함수 가로채 디버깅하기 — 호출 추적, malloc 집계, 시간 조작, 장애 주입

장애 상황을 재현하려고 보면 소스가 없는 바이너리이거나, 디스크를 실제로 가득 채우거나 시스템 시계를 바꿔야 하는 경우가 많다. 코드를 고치지 않고 "이 프로그램이 어떤 파일을 여는지", "디스크가 꽉 차면 에러 처리를…

Continue ReadingLD_PRELOAD로 라이브러리 함수 가로채 디버깅하기 — 호출 추적, malloc 집계, 시간 조작, 장애 주입