리눅스 커널을 분석하기 위해서는 반드시 소스코드 레벨에서 분석이 필요할 때가 있습니다. 물론 모든 경우에 소스코드 레벨 분석이 필요한 것은 아니지만 ... 많은 경우에 필요로 하죠...
그때 많이 사용하게 되는 소스코드 분석 준비에 대해 알아보겠습니다.
source insight나 eclipe와 같은 GUI기반의 훌륭한 소스 Tool들이 있지만 리눅스 커널 소스코드를 분석하기에는 약간 모자란 부족한 점이 있습니다. 자신의 PC의 사양이 좋다면 상관 없지만 리눅스 소스코드는 100MB가 넘는 엄청난 용량을 자랑하고 이것을 한 프로젝트 구동하게 될 경우에는 문제가 발생할 수 있죠
그래서 저는 언제나... vim과 ctag를 이용합니다.
vim은 테스트 에디터이고 ctag는 소스코드의 tag를 분석해주는 tool입니다. 그밖에 다른 플러그인들도 많이 있지만 저는 이렇게를 가장 많이 사용합니다.
우선 설치 방법은 우분투를 기준으로
apt-get install vim ctags -y
입력하면 설치가 됩니다.
그 다음에는 ctag를 이용해 태그파일을 생성해야 합니다.
이때 2가지 방법이 있습니다
1. 소스코드 상위 루트에서 #ctags -R을 사용해서 생성
2. 소스코드 상위 루트에서 #make tags를 사용해서 생성
1번과 2번의 차이점은 2번으로 생성할 경우 해당 커널 config 파일을 기반으로 태그 파일을 생성하게 됩니다. 이유는 커널은 대양한 아키텍처를 포함하기 때문에 1번 방법으로 할 경우 중복된 태그가 다수 만들어집니다. 물론 아키텍처 별로 분석을 해야 할 경우에는 1번을 사용해야 되지만 자신의 현재 시스템에 적합한 소스코드를 분석하기 위해서는 2번을 사양해야 됨을 알아두시길 바랍니다.
마지막으로 제가 사용하는 vim 설정파일을 제안하는 것으로 마무리 하겠습니다.
set shiftwidth=2 ">>나 << 사용시 들여쓰기 간격을 지정합니다. "################### 단축키 설정 ####################" "F2 == 폴딩하기 " "F3 == 저장 " "F4 == 탭열기, Ctrl+h,l로 탭이동 " "F5 == 컴파일 후 결과보기 / 오류난 라인으로 이동 "F6 == Taglist 열기 "F7 == 태그리스트 넘어 다니기 "F8 == 디렉토리 목록 열기 "F12 == 저장후 종료
func! Tj() "=============== cscope 설정 ================" if filereadable("./cscope.out") func! Css() func! Csc() func! Csd() func! Csg()
"============== Man page 설정 ==============="
"############### taglist ##########################" |
'리눅스 커널 프로그래밍' 카테고리의 다른 글
리눅스 커널 프로그래밍 - 커널 자료구조 (2) (0) | 2018.01.10 |
---|---|
리눅스 커널 프로그래밍 - 커널 자료구조 (1) (0) | 2017.12.25 |
리눅스 커널 빌드시 에러 발생 대처방안 (openssl) (0) | 2017.12.11 |
리눅스 커널 컴파일 하기 (Ubuntu) (0) | 2017.12.10 |
리눅스 커널 - 시스템 콜 (3) (0) | 2017.12.06 |