출처: http://minjang.egloos.com/1043008

현재 윈도우에서 Eclipse + CDT + cygwin 조합을 사용 중입니다. 그 중에서 디버깅을 하는데 소스 코드가 보이지 않는 매우 치명적인 버그가 있습니다: "Source not found."에러가 gdb를 실행 시키면 발생합니다.

사용자 삽입 이미지

위 그림처럼 이클립스에서 아무런 설정을 특별히 해주지 않으면 소스 코드를 찾을 수 없다는 오류가 뜹니다. 한 마디로 디버깅 하지 말라는 소리죠. -_- 다행히 구글링 끝에 해결책을 찾을 수 있었습니다. 문제는 gdb의 소스 파일 형식이 윈도우 파일 시스템과 일치하지 않아 벌어지는 문제로 밝혀졌습니다.

사용자 삽입 이미지

 

밑줄 친 부분을 보면 문제가 대충 이해가 됩니다. "/home/offcity/sesc/src/libsmp/smp.cpp" 라는 파일을 바로 찾고 있는 것입니다. 이걸 윈도우 파일 시스템이 이해할 리 없죠. 아래 그림과 같이 매핑을 해줍니다.

Window -> preference -=> c/c++ -> debug -> common source lookup path -> add - > path mapping

사용자 삽입 이미지


그러면 소스코드가 현재 디버깅 위치와 함께 아름답게 씽크를 이루는 모습을 드디어 볼 수 있습니다.

참고: http://www.eclipse.org/newsportal/article.php?id=10811&group=eclipse.tools.cdt#10811

잡담

  1. Cygwin이 생각보다 무지 좋습니다. 이클립스까지 물리니 거의 완벽하게 리눅스 개발 환경이 모방이 됩니다. Cygwin을 더욱 더 예쁘게 쓰려면 여기를 참고 하십시오:
    1. http://web.gccaz.edu/~medgar/puttycyg/
    2. http://blog.gleamynode.net/2007/01/bash-here-context-menu-with-puttycyg.html
  2. Cygwin을 바로 깔면 생기는 bash의 프롬프트는 아름답지 못합니다: http://nowdac.tistory.com/2460698
  3. 흔히 소개되는 이클립스 + CDT의 윈도우 사용은 MSYS+MinGW가 기준입니다. 절대로 이렇게 하지 말고 Cygwin으로 하십시오.
  4. 리눅스 우분투 6.10을 아주 잘 깔았는데 nVidia 7600GT 드라이버가 끝까지 말썽입니다. 재부팅을 하면 X로 들어가지 못합니다. 다시 드라이버를 설치해야 들어가집니다. 듀얼 모니터 설정 때문에 이런 것 같습니다. 베릴 역시 잠시 깔아봤는데 재밌더군요. 그러나 듀얼을 활성화 시키고 재부팅 하면 역시 먹통. 엔비디아 7600 그래픽 카드가 소수가 사용하는 것도 아니고 가장 많이 팔리는 카드 중 하나인데 이래서야… 아무리 삽질을 즐긴다고 해도 드라이버 설정은 너무 괴롭군요.
  5. 비스타를 깔고 리눅스를 까니 GRUB이 첫 번째 하드의 MBR을 차지하게 됩니다. GRUB 뜨는 속도가 좀 느린 것 같아서 비스타의 부트로더가 맨 첨에 불리게끔 비스타 DVD 넣고 부팅해서 복구 콘솔에서 bootrec를 해줍니다. 그러면 MBR이 비스타 부트로더로 복구가 됩니다. 그리고 여기서 BCD Edit 프로그램으로 리눅스로 빠지게 해주면 되는데 저는 이게 죽어도 안 되는군요 -_-;
    1. http://apcmag.com/5046/how_to_dual_boot_vista_with_linux_vista_installed_first
    2. http://apcmag.com/5045/how_to_dual_boot_vista_with_linux
  6. 우분투 6.10 설치는 일단 Live CD로 부팅이 됩니다. 여기서 인터넷까지 다 되죠. 윈도우 같은 경우도 Embedded XP를 이용하면 Read-only 매체용으로 운영체제를 만들 수 있습니다. 만들어보면 재미가 쏠쏠하죠.
  7. 윈도우 위에서 이클립스의 C/C++ 개발 환경에 대해서 한 말씀을 드려보자면, 일단 Visual C++하고는 비교하지 맙시다.. 요 한 마디만 하겠습니다.
  8. 그래도 gdb 커맨드 라인에서 숱하게 변수 값과 콜 스택 봐야하는 삽질만 덜어준 것만으로도 감사… DDD/KDevelop 에 비하면 훨씬 이클립스가 준수합니다. STL을 엄청 쓴 프로젝트를 들여다보는데 이건 정말 디버거에서 값 알아보기가 거의 불가능하군요. VC++의 Visualizer기능이 그립습니다.
  9. RHEL 64비트 환경에서 JRE 64비트와 이클립스 64비트 버전은 아름다운 오류를 내면서 실행도 되지 않습니다. 그래서 둘 다 32비트로 하면 잘 돌아는 갑니다만 치명적으로 gdb가 머신이 다르다며 실행도 시켜주지 않습니다.
  10. 그래도 이클립스 열심히 만져보니 이제 대충 이클립스의 프로젝트 관리나 기타 등등에 익숙해지는군요. 저는 Makefile을 import하면 깔끔하게 프로젝트 파일을 만들어줄지 알았는데 이거까지는 아니군요.


Posted by BAGE