피드로 돌아가기
Hacker NewsHacker News
Infrastructure

LD_DEBUG를 활용한 Linux Dynamic Linker 로드 문제 해결

The LD_DEBUG environment variable (2012)

2026년 6월 9일15intermediate

Context

다수의 Shared Library를 사용하는 대규모 시스템에서 버전 불일치로 인한 잘못된 라이브러리 로드 버그 발생. 기존 strace 방식은 모든 시스템 콜을 추적하므로 분석 효율성이 낮고 노이즈가 많은 한계 존재.

Technical Solution

  • LD_DEBUG 환경 변수 설정을 통한 Linux Dynamic Linker의 내부 디버그 정보 직접 추출
  • 'libs' 옵션 적용을 통한 라이브러리 검색 경로(Search Path) 추적 및 검증
  • 'reloc' 및 'symbols' 설정을 통한 Relocation 처리 과정과 Symbol Table 매핑 분석
  • 'bindings' 옵션을 활용한 실제 Symbol Binding 과정의 가시성 확보
  • LD_DEBUG_OUTPUT 변수를 통한 표준 출력 분리 및 로그 파일 기반의 정밀 분석 구조 설계
  • ldd, objdump, patchelf 등 보조 도구와 병행하여 ELF 실행 파일의 rpath 및 의존성 체인 검증

- 라이브러리 로드 순서 및 버전 충돌 의심 시 LD_DEBUG=libs 설정 후 경로 확인 - Symbol Binding 실패 시 LD_DEBUG=bindings 옵션으로 실제 바인딩 대상 검증 - ELF 실행 파일의 rpath 수정이 필요한 경우 patchelf 도구 검토 - Windows 환경의 유사 문제 발생 시 gflags.exe의 ShowLoaderSnaps 기능 활용

원문 읽기