소스 인사이트(Source Insight) 파서 문제 :: 2007/11/21 13:21


요즈음 간단한 드라이버를 만들 일이 있어서 소스 인사이트를 설치했습니다. 뭐 드라이버를 꼭 소스 인사이트로 개발해야 되는 것은 아니지만 제가 처음 드라이버란 것을 알게된 회사에서 대부분의 드라이버 개발자 분들이 소스 인사이트를 사용했기에 은연중에 소스 인사이트로 개발하면 편리하다는 생각을 하게 되었습니다. 그 많은 개발자들이 쓰는데는 이유가 있다고 생각했거든요. ㅋ 그러고 보면 참 첫 경험은 정말 중요합니다. 누군가 노트패드로 드라이버 개발하는 것을 봤으면 저 또한 그렇게 할지도 모르는 일이니까요. ㅋ

하여튼 설치하고 업데이트 받고 했습니다. 그리곤 DDK 경로를 설정하고 심볼 패스에 추가하고 *드디어* 실제 드라이버 프로젝트를 생성했습니다. 으례 그렇듯이 DriverEntry를 코딩합니다. 심벌이 제대로 설정됐나 보기 위해서 PDRIVER_OBJECT에서 커서를 놓아봅니다. 오오 좋습니다. ㅋ 옆에 PUNICODE_STRING으로 이동합니다. 그런데 이놈 PUNICODE_STRING을 찾지를 못합니다. 쌩 쑈 끝에 원인을 알아 내었습니다. ntdef.h에 정의된 PUNICODE_STRING 정의 위쪽 어느 부분 부터 파싱을 못하더군요.

사용자 삽입 이미지

문제를 단순화 시키면 위와 같습니다. 똑같은 두 문장이 반복되서 나오는데 첫 번째 A_FOO를 보면 진하게 표시된게 소스 인사이트가 알아 먹었음을 알 수있습니다. 그런데 두 번째 A_FOO를 보면 연하게 표시된게 소스 인사이트가 알아먹지 못했음을 알 수 있습니다. 헐헐. 뭔가 파서의 문제라는게 확 느껴지지 않나요. 삽질한게 아까워서 감히 염치도 없이 소스 인사이트 서포트 메일에 버그인 것 같다고 메일을 보냈습니다. 그리고는 Visual Studio를 꺼내서 ddkbuild로 작업했습니다. 소스 인사이트 뽀대가 좀 아쉽긴 했습니다. ㅋ

오늘 답장이 왔습니다. 아래 부분이 메일의 핵심입니다.
The problem can be handled by using the Edit Condition dialog, and defining the state of DEFA. You can find information here:

About Edit Condition:
http://www.sourceinsight.com/docs35/af914765.htm

and
http://www.sourceinsight.com/docs35/ad918685.htm

간단하게 해결책을 설명드리면 파싱하지 못하는 곳의 #if, #ifdef, #ifndef 등에 사용된 조건 변수를 지정해 주라는 것입니다. 위의 그림에서는 두번째 A_FOO가 시작되는 #ifdef ABC 부분에서 ABC를 선택하고 오른쪽 마우스 버튼을 누르면 메뉴가 나오죠. 거기서 Edit Condition을 선택합니다. 그리고 ABC를 0으로 설정해 줍니다. 그럼 제대로 파싱이 된답니다. 그런데 이걸 일일히 찾아서 해주기엔 너무 귀찮잖아요. ㅋㅋ 그래도 소스 인사이트 뽀대를 쓰기 위해서 ddk 헤더를 열어서 저 뻘짓을 해줬습니다. 물론 심벌 못보고 코딩해도 별 상관은 없지만 좀 아쉽잖아요. 소스 인사이트 쓰는게 그것 때문인데. ^^;;

사용자 삽입 이미지

스폰서
글타래

  • 2주간 인기 글
  • 2주간 인기글이 없습니다.
Trackback Address :: http://jiniya.net/tt/trackback/654
  • Gravatar Image.
    zoops | 2007/11/21 16:32 | PERMALINK | EDIT/DEL | REPLY

    소스 인사이트 뽀대가 정확히 어떤것들인가요?
    전 적어 놓으신 visual studio + ddkbuild 로 개발했는데.... 아주 편했는데요...

    뭘까??

    • Gravatar Image.
      codewiz | 2007/11/21 17:40 | PERMALINK | EDIT/DEL

      visual 자체가 뽀대죠.
      물론 Visual Studio도 F12를 활용하면 정의된 곳으로 이동하니 별로 불편하진 않지만, 그래도 한 가지 폰트로 단조로운 화면을 봐야 한다는 점은 좀 그렇지 않나요? ㅎㅎ 신택스 컬러링도 단조롭구요. 물론 개발하는데 이런 것들이 치명적으로 중요한 부분은 아니지만 그래도 눈이 즐거우면 좋잖아요. ^^;;

  • Gravatar Image.
    키눅스 | 2007/11/21 17:19 | PERMALINK | EDIT/DEL | REPLY

    저도 Visual Studio + DDKBuild 환경 사용하는데(첫 직장에서 사용하던 개발툴 이라 ^^;)
    소스 인사이트의 뽀대가 뭔지??? (예전에 잠깐 사용했었는데.. 별반 ^^)

    • Gravatar Image.
      codewiz | 2007/11/21 17:41 | PERMALINK | EDIT/DEL

      눈이 즐겁다는 거죠.. ㅎㅎ^^;;
      물론 이건 개인적이 취향의 차이라고 봅니다만... ㅎㅎ
      아마 리소스 작업만 없다면 아마 전 윈도우 프로그램도 Visual Studio로 작성하진 않을것 같아요. ㅋㅋ

  • Gravatar Image.
    cn | 2007/11/21 19:47 | PERMALINK | EDIT/DEL | REPLY

    Visual Assist 로 비슷하게 만들 수는 있을 것 같아요

    • Gravatar Image.
      codewiz | 2007/11/22 13:38 | PERMALINK | EDIT/DEL

      전 6.0때는 Visual Assist 매니아였는데, 2003부터는 없이 사용합니다. Assist가 없어도 사용할만 하더라고요.

  • Gravatar Image.
    parkboo | 2007/11/22 11:42 | PERMALINK | EDIT/DEL | REPLY

    소스인사이트 정말 좋죠.. 저런 파싱 문제가 가끔 골치를 썩이긴 하지만
    이젠 없으면 개발할 엄두가 안납니다요
    조그만 프로젝트는 모르겠는데 덩치가 커지면 visual assist로는 감당이 안되는듯.

    • Gravatar Image.
      codewiz | 2007/11/22 13:38 | PERMALINK | EDIT/DEL

      소스 인사이트도 좋은 툴이죠. 특히나 비주얼을 좋아하는 저같은 개발자들한테는요. ㅋㅋㅋ

  • Gravatar Image.
    bandol | 2010/04/13 05:17 | PERMALINK | EDIT/DEL | REPLY

    안녕하세요 .... 이글 상당히 오래됬군요 ㅋㅋㅋ

    다름이 아니라 source insght와 wdk의 연동에 대해서 물어보고 싶어서요! ㅋㅋ

    이거 두개 어떻게 연동시키신 거에요? 인터넷 아무리 뒤져도 안나오네요! ㅋㅋ

    부디 방법을 알려주세요... ㅋㅋㅋ

    메일은 zeratool2@naver.com입니당 ㅋ

Name
Password
Homepage
Secret
< PREV | 1| ... 87|88|89|90|91|92|93|94|95| ... 604| NEXT >