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