Media Log

나는 디바이스 드라이버를 개발할 때, 마이크로소프트의 Prefast for drivers 를 몹시 애용한다.
내가 미처 생각하지 못했던 실수들을 잘 발견해서 가르쳐주기 때문에, 나는 코딩할 때는 항상 경고레벨을 최고로 둠과 동시에 빌드시마다 Prefast 를 자동으로 실행시켜서 경고가 발생했는지 확인하고는 한다.

이렇게 함으로써 버그를 잡을 수 있을 뿐 아니라 코드를 조금 더 정교하고 튼튼하게 만들수 있고 여러 좋은 습관들까지 몸에 배이도록 할 수있다.
이것은 거의 공짜로 주워먹는 큰 이득이기 때문에, 쓸만한 정적 분석툴을 가지고 있다면 무조건 적용시키는 것이 좋다.

나는 Prefast를 유저모드에서도 사용할 수 없을까 찾아보다가 해결책을 찾지 못하고 cppcheck라는 다른 툴을 알아보게 되었다.

cppcheck는 멀티 플랫폼에서 사용할 수 있도록 만들어졌고 오픈소스이며, 분석 능력도 그럭저럭 만족스럽다.
어떤 것들을 분석해주는지는 웹사이트에 잘 나와있으며, 안 읽어보더라도 조금 쓰다보면 금방 알게된다.

GUI 버전으로 실행할 수도 있고, 콘솔 프로그램만으로도 결과를 얻을 수 있는데 나는 Visual Studio의 External Tools 기능을 이용해서 콘솔 프로그램만을 구동시킨다.


위 처럼 적어넣으면 내가 원할 때마다 한번씩 쉽게 분석 작업을 수행할 수 있다.
빌드 후 이벤트에 넣어서 매 빌드마다 실행되게 할 수도 있지만, 모든 프로젝트에 각각 적용시키려면 귀찮은 짓을 많이 해야한다.

External Tools 는 전역 기능이기 때문에 한번만 적어놓으면 가지고 있는 모든 VC 프로젝트에서 바로 사용이 가능하다.

나는 비주얼 스튜디오 아웃풋 윈도우로 출력을 돌리도록 설정하고 사용하는데, 이렇게 할 때는 --template vs 옵션을 주는 것이 좋다.
이 옵션을 넣으면 더블클릭을 통해 해당 소스 코드 위치로 바로 이동할 수 있도록 메세지를 다시 포맷팅 해서 출력해준다.

정말 쓸데없는 경고는 disable 시켜야 하는데, 편리하고 정교하게 disable 시킬수 있는 인터페이스가 아직 없다. 이런 것들은 앞으로 더 개선될 것으로 기대한다.

기존에 이런 종류의 컴파일러 경고들에 무심했었다면, 미친듯이 쏟아지는 경고메세지를 보고는 바로 이 짓을 때려칠지도 모르겠다.

"도대체 누가 경고레벨을 최대로 올리고 코딩을 해?"
"이런 경고 메세지들은 다 쓸데없는 것들이야. 코딩 잘하는데는 도움이 하나도 안돼"

이런 썩어빠진 마음가짐은 빨리 버려야 한다.
자신이 짠 코드에서 경고가 우르르 쏟아져나온다면 분명히 문제가 있는 것이다.

공짜로 얻을 수 있는 이득을 좋아한다면 한번씩 시도해보자.
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/137 관련글 쓰기

  1. 지나리 at 2010/08/06 23:34 [edit/del]

    와우 끝내주는군요. 잘 보고갑니다 ㅎㅎ

    Reply
  2. Favicon of http://nyolong.egloos.com/ BlogIcon 뇨릉 at 2010/08/11 20:23 [edit/del]

    저도 Warning 레벨 4에 경고를 에러로 처리하도록 해놓고 하곤 하는데요.
    에러 메시지에 당황하는 분들도 계시더군요.
    아직까지 정적코드분석툴은 안써봤었는데 이제 써봐야 겠습니다.

    Reply
    • Favicon of http://www.petabytes.org BlogIcon 김재호 at 2010/08/11 21:46 [edit/del]

      네, 경고를 에러로 처리하고 계신다면 정적분석툴도 틀림없이 좋아하실꺼에요. Visual Studio Team Suite 이상 버전 부터는 정적분석기가 내장되어있습니다.

  3. 곽재상 at 2011/03/21 16:31 [edit/del]

    자바 소스 분석툴 찾다 보니 구글에 낯익은 이곳까지 오게 되네요 ㅋㅋ 올때마다 홈페이지 UI가 계속바뀌네요?? 잘 보고 가요~~

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2011/03/21 21:37 [edit/del]

      그래 재상아. 검색해서 오지 말고 종종 놀러와. 크크^^
      영신이 회사 얼마전에 서울대입구로 옮겼더라. 같이 또 저녁밥이나 먹자구.

submit
Windows Internals 제5판 - 10점
마크 러시노비치 외 지음, 안철수 연구소 기반기술팀 옮김/에이콘출판


악. 기다리고 기다리던 Windows Internals 5th가 드디어 번역본이 나왔다.

이 책을 처음 훑어 봤을 때는 데이빗과 마크 이 자식들이 대체 무슨 이야기를 하고 있는 건지, 왜 이 따위 얘기를 하는건지 아무것도 이해할 수가 없었다.

4판 서문에 저자들이 제프리리처에게 감사를 전하는 문구가 있는데 내용이 너무 웃긴다.

Thanks to our friend Jeffrey Richter, for writing the "What about .NET and WinFX" sidebar in Chapter1 and for continuing to remind us over many dinners together of his view on how few people should care about what we talk about in this book.

도대체 그런 주제로 책을 쓰면 몇 명이나 사보겠냐. Windows via C/C++ 을 이길수 있을 것 같아? 라고 밥먹는 중에 놀려대는 모습이 왠지 상상이 간다.

디바이스 드라이버를 만들어보면서 이 책의 내용들이 조금 더 잘 이해가 되기 시작했다. 그리고 특정 개발자들에게는 정말 중요한 내용이라는 것도 알았다.

내 실력이 부족한 것이 주 원인이었지만 기존 4판에서는 번역도 조금은 불만족스러웠고 잘못된 그림이나 오타 등도 많아서 답답했다.
그것보다 더 중요한 것은 비스타 이후 변경된 많은 내용들이 4판에는 없었다는 것인데, 그래서 5판이 빨리 번역되어 나오기를 간절히 기다려왔다.

실력있는 사람들이 작업한 만큼 많은 것을 배울 수 있을 것 같아서 가슴이 설렌다.
책 값이 조금 비싸긴 하지만, 뭐 좋은 책이니깐 이 정도 쯤이야.
크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/136 관련글 쓰기

  1. 윈도우 개발자의 필독서『Windows Internals 제5판』
    // 에이콘 출판사 블로그 acornLoft 2010/07/23 13:07 x
  1. Favicon of http://namoda.springnote.com BlogIcon 나모 at 2010/10/28 14:15 [edit/del]

    지난 주에 교보에 들렸다가 이 책을 보고 바로 구입했습니다. 오늘 도착했는데 Windows via C/C++ 옆에 놔두니 다른 출판사의 책이지만 옆면은 비슷하네요. 둘 다 Microsoft Press 라서 그런가요?

    Reply

submit

쿼드 코어가 대중화되기 시작할 때였으니깐 2008년도 쯤이었나보다.

예전에 친구들하고 술을 마시면서 컴퓨터 이야기를 했었다.
우리들은 다 같은 컴퓨터 공학도라서 술 마시면서 기술에 대해서 많이 얘기하곤 하는데, 그 날은 CPU 얘기가 나왔다.

한 친구 녀석이 컴퓨터를 새로 샀다고 자랑을 하면서, 코어가 많아지면 돈만 비싸지고 실제로는 싱글코어보다 더 느릴 수 있다는 얘기를 했다.

그 친구도 컴퓨터 공학을 전공했기 때문에 프로그램에 대해서 좀 알고 있었는데, 1개의 쓰레드만 사용하는 프로그램은 쿼드코어보다도 싱글코어 머신에서 더 빨리 동작한다는 것이다. 물론 쿼드코어 머신의 클럭이 더 낮을 경우에.

많은 사람들이 비슷한 생각을 가지고 있을 수 있는데 사실 이는 틀렸다. 한 클럭에 1개의 명령어만 처리할 수 있다고 한다면 물론 맞는 얘기겠지만 요즘 CPU는 너무나 똑똑하다.

요즘 나오는 2.0대 초반의 코어 하나가 2005~6 년 아키텍쳐의 싱글코어 3.0대 CPU들보다 훨씬 많은 일을 할 수 있다.

클럭이 높으면 열도 많이 나고 전기세도 많이 나가기 때문에, 나는 CPU를 살 때 항상 2.33이나 2.66 정도의 모델에서 고르곤 한다. 낮은 클럭의 CPU를 사면 오버클럭킹도 더 안정적으로 할 수 있기 때문에 여러모로 좋은 점이 많다.

어떻게 이런 일들이 벌어지는지 궁금하다면 이 책을 읽어보는 것이 도움이 될 것이다.

가벼운 책으로 카테고리하긴 했지만 가벼운 내용은 아니다. 사실은 정말 어렵다.

학교 다닐 때는 컴퓨터 구조가 너무도 재밌었는데, 요즘에는 컴퓨터 구조가 왜 이렇게 어렵고 무섭게 느껴지는지 모르겠다.

그래도 이 책은 여러 재밌는 주제들을 비교적 가벼운 문체로 설명하고 있으므로, 한 번 도전해서 읽을만 하다.

나는 책을 읽으면서 오탈자를 거의 찾지 못했는데, 한빛미디어 오탈자 페이지에 아주 많은 버그신고가 되어있는 것을 보고 깜짝 놀랐다. 참 대단한 사람들이다.

아마 2쇄에서는 저 내용들이 잘 반영되어 나올 것이다.

저자는 블로그에 윈도우 프로그래밍이나 병렬 프로그래밍에 대해 포스팅하곤 하는데, 주제나 내용이 자극적이고 재밌는 것들이 많으므로 피드를 구독해서 받아보는 것을 추천한다.

크리에이티브 커먼즈 라이선스
Creative Commons License

http://www.benjaminlog.com/trackback/134 관련글 쓰기

  1. 파헤쳐보자 멀티코어 (프로그래머가 몰랐던 멀티코어 CPU 이야기)
    // Lemon's Architect World 2010/07/08 21:26 x

submit