-
리눅스 커널 분석을 위한 eclipse CDT 설정Develop/Linux 2017. 12. 7. 15:42
리눅스 커널 분석을 위한 eclipse CDT 설정 방법에 대해 알아본다. 커널 개발에 익숙하신 분들이라면야 vim으로 해결을 보는 방법도 있지만 gui의 장점을 살려 다양한 기능을 제공해 주는 eclipse를 사용하는 편이 편한 것 같아 이렇게 소개하려고 한다.
Eclipse로 분석할 때 장점
vim, ctags, cscope로 분석해도 전반적인 코드 흐름을 쫒아가는 것이 가능하다. 하지만 커널의 특성상 많은 define들이 정의되어 있고, 옵션에 따라 사용되지 않는 코드가 존재하지만 vim에서는 이러한 것들을 표현해 주기엔 어려움이 많다. (물론 플러그인들일 존재하겠지만...)
CDT를 사용시 커널 config를 통해 생성된 preprocessor 파일을 통해 사용되는 코드와 사용되지 않는 코드를 표시해 주기 때문에 분석에 용이하다.
Linux kernel 준비
CDT 분석을 위해 커널이 준비되어 된다. (당연한건가...?)
아래 페이지를 참고 하자.[Develop/Linux] - 커널 개발 기초 : ARM 커널 빌드
새 Project 생성
새 프로젝트를 생성한다.
Language는 C로 설정
Tool chain은 환경에 따라 선택. 본 글에서는 ARM crosscompile을 예제로 하기에 Cross GCC를 선택프로젝트 설정
1. Project > Properties
2. C/C++ General > Preprocessor Include Paths, Macros etc
3. Entries > GNU C > CDT User Settings Entries > "include/linux/kconfig.h" 선택
4. Providers > CDT Cross GCC Built-in Compiler Settings
"Use global provider shared between projects" 선택 해제
"-nostdinc" 추가5. Indexer
"Specific Setting" 선택
"Undexer options" 모두 해제6. Paths ans Symbols > Includes
아래 디렉터리 추가. 아키텍쳐에 따라 다르게 include해야 함
SRC/include
SRC/include/uapi
SRC/arch/ARCH/include
SRC/arch/ARCH/include/uapi7. Paths and Symbols > Symbols
__KERNEL__ = 1 추가
8. 빌드 대상 파일 선택
Indexing에 걸리는 시작을 단축하기 위해 빌드 대상 파일을 조정할 필요가 있다.
사용하지 않는 아키텍쳐에 관련된 파일, 그리고 분석에 필요 없는 소스 및 헤더 파일 등은 모두 빌드 대상에서 제외해 주면 좋다예.
arch/*
certs/
crypto/
drivers/
samples/
scripts/
...9. 짜잔!!
Indexing에 시간이 조금 오래 걸린다. 차분히 기다리면 아래와 같이 제대로 표시되는 것을 알 수 있다.
이제 커널을 분석하자..
참고 링크:
https://wiki.eclipse.org/HowTo_use_the_CDT_to_navigate_Linux_kernel_source
댓글