반응형

리눅스 환경에서 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


를 눌러 주시면 됩니다.



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


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


감사합니다.

반응형
Posted by 해리팍
BLOG main image

Chanhyun Park (해리팍)
Software Engineer @ SK hynix

Contact Info.
parkch0708@hanmail.net
chanhyun0708@gmail.com
chanhyun.park@sk.com

카테고리

All (1512)
Profile (2)
Park's Life (600)
Smart Home (IoT) (4)
Computer System (165)
Computer Programming (39)
Computer Study (54)
Computer Etc. (189)
Scuba Diving (137)
Golf (8)
Traveling (250)
생활 정보 (13)
Pokemon GO (50)