Computer System/Linux

[Linux] 소스 분석 툴 ctags 사용법

해리팍 2015. 4. 28. 16:51
반응형

리눅스 환경에서 vi (vim) 에디터를 사용하여 소스 분석을 진행할 때 유용하게 사용할 수 있는 툴인 ctags에 대해 알아보도록 하겠습니다.


ctags는 소스 분석 중 선택(?)한 구조체, 함수, 매크로 등 (이하 태그)이 선언되어 있는 곳으로 이동시켜줍니다.


1. ctags 설치


$ sudo apt-get install ctags



2. tags 파일 생성


tags 파일은 보통 분석할 소스의 제일 상위 디렉토리에 생성을 합니다.


최상위 디렉토리에서 다음의 명령어를 실행하면 됩니다.


$ ctags -R


'-R' 옵션은 하위 디렉토리까지 모두 검색하여 tags 파일을 생성하겠다는 의미 입니다.



3. vi (vim) 실행 및 vimrc 파일 수정


ctags를 사용하기 위해선 tags 파일이 생성된 최상위 디렉토리에서 vi (vim)을 실행해야 합니다.


만약 하위 디렉토리에서도 ctags를 사용하기 위해서는 다음의 문구를 ~/.vimrc 파일에 추가해줍니다.


set tags=./tags,../tags,../../tags


이 설정은 현재 디렉토리와, 상위 디렉토리, 상위 상위 디렉토리 까지 tags 파일을 검색하게 됩니다.


만약 한단계 더 하기 위해선


set tags=./tags,../tags,../../tags,../../../tags


로 설정을 해주어야 합니다.


계속 추가가 가능합니다만...


저는 그냥 위의 설정을 사용하지 않고, tags 파일이 있는 최상위 디렉토리에서 에디터를 실행합니다.



4. ctags 사용


ctags 명령어는 vi (vim)의 명령어를 사용하는 것 처럼 사용 가능합니다.


:ta keyword


keyword와 일치하는 태그가 선언되어 있는 곳으로 이동


:ta /keyword


keyword를 포함하는 태그가 선언되어 있는 곳으로 이동



:tj keyword (jump)


keyword와 일치하는 태그의 목록을 출력하고, 사용자가 선택하여 이동. (한 개일 경우 바로 이동)


:tn (next)


목록의 다음 항목으로 이동 (tj 명령어를 사용하여 출력한 목록에서 5번 항목을 선택한 후 :tn 명령어를 입력하면 6번 항목으로 이동합니다.)


:tp (previous)


목록의 이전 항목으로 이동 (tj 명령어를 사용하여 출력한 목록에서 5번 항목을 선택한 후 :tp 명령어를 입력하면 4번 항목으로 이동합니다.)


:tr (rewind) / :tf (first)


목록의 제일 처음 항목으로 이동


:tl (last)


목록의 제일 마지막 항목으로 이동


:tjs keyword (jump)


:tj 명령어를 새창에서 실행합니다.


소스 코드 분석 중 현재 커서의 위치에 있는 태그의 선언 부분을 보고 싶으시면 명령어 입력 없이


Ctrl + ]


를 눌러 주시면 됩니다.


만약 이전 위치로 돌아가고 싶다면


Ctrl + t


를 눌러 주시면 됩니다.



저는 아직까지 위의 명령어들 만으로 소스를 분석하고 있습니다.


혹시 유용한 명령어가 또 있다면 댓글 부탁드립니다.


감사합니다.

반응형