리눅스 환경에서 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
를 눌러 주시면 됩니다.
저는 아직까지 위의 명령어들 만으로 소스를 분석하고 있습니다.
혹시 유용한 명령어가 또 있다면 댓글 부탁드립니다.
감사합니다.
'Computer System > Linux' 카테고리의 다른 글
[Linux-Network] 리눅스 패킷 분석기 TCP dump (tcpdump) 사용법 (0) | 2015.10.19 |
---|---|
[Linux] 소스 분석 툴 cscope 사용법 (15) | 2015.04.28 |
[Linux] MIPS 크로스 컴파일러 (mips-linux-gnu-gcc) 설치 (3) | 2015.04.08 |
[Linux] 리눅스 diff 명령어 사용하여 패치 파일 만들기 (0) | 2015.03.31 |
[Linux] Ubuntu에 가상머신 KVM (QEMU) 설치 및 사용법 (0) | 2015.03.20 |