목요일, 1월 10, 2008

<열씨미와 게을러의 리눅스 개발 노하우 탐험기> 시즌2를 기다리면

jhrogue님 저서 : <열씨미와 게을러의 리눅스 개발 노하우 탐험기>

목차를 보자마자 바로 구미가 당겼다.


  1. 단순한 파일 비교를 넘어서: diff, patch, 파일 비교 유틸리티를 설명한다
  2. 원시 코드 색인은 나에게 맡겨라: scope, (c)ctags, global을 설명한다
  3. 공유 라이브러리와 심볼 이름을 찾아라: 공유 라이브러리 의존성, 심볼 이름 탐색, C/C++ 링킹에 대해 설명한다
  4. 분위기 파악 못하는 훼방꾼 configure(1): 수동으로 삽질 끝에 삼바 2.2.9 교차 컴파일에 성공한 열씨미씨를 추적한다
  5. 분위기 파악 못하는 훼방꾼 configure(2): 코드 한 줄 손대지 않고 정석으로 삼바 2.2.9 교차 컴파일에 성공한 게을러씨를 추적한다
  6. 자동화된 빌드 시스템 구축(1): GNU autotools에서 autoconf와 automake를 소개한다
  7. 자동화된 빌드 시스템 구축(2): GNU autotools에서 libtool과 고급 활용 기법을 소개한다
  8. 숨겨진 1인치의 의존성을 찾아라: make, 의존성(makedepend, mkdep), 컴파일러 캐시(ccache)를 소개한다
  9. 메모리 디버깅을 위한 친구: 동적 메모리 할당에서 주의할 점과 자동화 도구인 rmalloc을 소개한다
  10. 프로그램을 동적으로 추적하는 도구: fuser/lsof, strace/ltrace 유틸리티를 소개한다
  11. 스택 탐색을 통한 디버깅: gdb로 스택과 스택 프레임을 추적하는 방법을 소개한다
  12. 스택 탐색을 통한 백트레이스 구현: glibc/gcc/C로 스택 백트레이스 구현 기법을 소개한다
  13. 공포의 커널 패닉과 웁스: 커널 웁스에 대항해서 문제 위치를 파악하는 기법을 소개한다
  14. raw 디바이스 다루기: 유닉스 추상화에 속을뻔한 게을러씨와 열심히씨를 구출하는 일화를 소개한다

아직 시즌1도 읽지 않은 <장림>은 벌써부터 시즌2가 기대된다.


<장림>은 시즌2에서 소스관리 툴에 대해 다뤄줬으면 하는 바램을 가져본다.

프로그래머의 필수인 소스관리툴(svn, cvs, etc).
그런데 단순히 백업용으로만 소스관리툴을 사용한다면...
svn 개발자들이 섭섭해 할 것이다.

<장림>도 svn을 주로 소스 백업용으로 사용하지만 가끔 디버깅용으로 사용하기도 한다.

몇년전 <장림>이 작성한 프로그램은 어느정도 안정적으로 돌아가고 있어서 그 후 수정사항들은 그리 중요한 것이 없었다.
그런데 어느날 프로그램이 비정상적으로 동작한다는 피드백을 받았다.
<장림>은 무척 난감했다. 최근에 중요한 루틴에 손덴적이 없는데 왜 비정상적으로 동작한다는지 감이 오질 않았다.
시간도 많이 자나서 기억도 잘 나지 않고 난감했다.
이때 커밋할때마다 귀찮지만 충실히(?) 적은 주석이 도움이 되었다.
svn diff로 소스만 봐서는 뭔소린지 감이 오질 않았지만 주석을 보니 어떤 말도 않되는 헛지거리를 했는지 눈에 확 들어왔다.
svn이 없었다면 정상적으로 돌아가는 최종버전과 현재버전에 diff를 한 후 뭐가 잘못 됬는지 소스코드와 한참 씨름을 했을지도 모른다.

svn은 어떻게 사용하느냐에 따라 단순히 버전관리도구가 아닌 다른 용도로도 쓰일 수 있다.
무지한 <장림>에게 jhrogue님이 자신만의 버전관리도구 사용 노하우를 공개해 준다면 <장림>은 너무 기뻐하면 jhrogue님을 칭송 하리라.

댓글 없음: