디버깅 애플리케이션 닷넷 윈도우
존 로빈스의 디버깅 애플리케이션

이 책은 John Robbins의 하나뿐인 명작 시리즈이다.

이 디버깅 시리즈는 총 3판 까지 발행 되었다.
1판은 Debugging Applications란 이름의 native code만을 다룬 서적이고,
지금 이 책이 native와 managed 코드를 같이 다루는 2판,
그리고 2006년 말 즈음에 나왔던 것 같은 3판은 오직 관리코드에 대해서만을 다룬다. 그래서 2판이 가장 두껍다.

아쉬운 소식 중 하나는 이 책의 저자인 존 로빈스가 더 이상 책을 쓰지 않기로 했다는 것이다.
책만 쓰면 인터넷에 여기저기 돌아다니고 하는 것에 화가 났던 것 같다.
아쉽지만 그래서 이 책의 가치가 더 높아진다 볼 수도 있겠다.

내가 이 책을 처음 알았던 것은 신입사원 때였다.
지금 생각해보니 도대체 학교 다닐 때는 왜 이런 책들을 모르고 ‘소설같은 C#’ 같은 류의 책들만 봤는지 모르겠다.
이런 훌륭한 책으로 학생 때 여유를 가지고 공부하지 못했던게 아쉬울 뿐.

신입사원 때 회사 위키에서 map 과 pdb 파일을 사용해 코드 위치를 역추적 하는 글을 읽었는데 무슨 말인지 전혀 이해가 되지 않았다.
글을 적은 분에게 무슨 책 읽으면 됩니까 물었더니 이 책을 권해주셨다.

이 책을 읽고 나서는 나도 map 파일과 pdb 파일이 뭔지 알게 되었다.
빌드 할 때마다 버전별로 저런 디버깅 정보들을 자동으로 모아둘 수 있도록 구성해 두었고,
사용자들이 오류보고서 정보를 보내주면 그 정보들을 보고 프로그램이 어디서 죽었는지 찾을 수 있게 되었다.

물론 이 커다란 책에 단지 충돌 주소로 소스코드 위치를 찾는 방법만 나와 있는 것은 아니다.
이 책은 Windows 환경에서 디버깅하는데 필요한 거의 모든 지식을 다룬다.

내가 재미있게 읽고 프로젝트에 적용 할 수 있었던 것들은 다음과 같다.

  • 심볼서버 구성,
  • ASSERT와 TRACE,
  • 경고 없는 코드를 작성하는 방법
  • 컴파일, 링커 옵션에서 각 스위치들의 의미,
  • DLL이 로드되다가 충돌 하였을 때 재배치되는 과정과 방지하는 방법,
  • 멀티쓰레드 프로그래밍시에 주의사항,
  • 기타 브레이크 포인트 고급 옵션들.

모든 Windows 프로그래머들에게 좋은 책이 될 것이라 확신한다.