본문 바로가기
운영체제/Linux

커널 소스 분석을 위한 ctags 사용법

by eteo 2024. 9. 22.

 

 

 

1. ctags란?

 

ctags는 소스 코드 파일을 분석하여 함수, 변수, 매크로 등과 같은 기호의 정의와 선언 위치를 저장한 태그 파일(tags)을 생성하는 명령어이다. 생성된 태그 파일을 Vim과 같은 에디터과 같이 사용하면 소스 코드 내에서 함수나 변수가 정의된 위치로 빠르게 이동할 수 있다.

 

 

 

 

2. ctags 설치

 

$sudo apt-get install exuberant-ctags

 

 

 

 

 

3. tags(태그 파일) 생성

 

리눅스 커널의 Makefile에는 tags를 생성하는 타겟 명령이 포함되어 있기 때문에 커널 소스가 위치한 디렉토리로 이동한 후 아래 명령어를 입력하면 tags를 생성할 수 있다. 커널 소스의 규모가 방대해서 이 과정은 몇시간 걸리니 할일 없을 때 실행시켜 놓으면 된다.

 

$make tags

 

 

일반적인 프로젝트에서 tags를 생성 하려면 ctags 명령어를 직접 사용하면 된다. 프로젝트의 루트 디렉토리로 이동한 후 다음 명령어를 입력하면 현재 디렉토리와 모든 하위 디렉토리의 파일을 탐색하여 태그 파일을 생성한다.

 

$ctags -R

 

 

 

 

4. Vim에서 tags를 사용하기 위한 설정 추가

 

Vim 에디터에서 tags 파일을 사용할 수 있도록 .vimrc 파일에 설정을 추가한다.

$cd ~
$vim .vimrc

 

다음 문장과 같이 tags가 있는 절대 경로를 등록해 둔다. 구분자 ;를 사용해 여러 tags를 등록할 수 있다.

set tags=/home/user/project/root/tags

 

 

 

 

5. Vim에서 tags 사용법

 

  • Ctrl + ] : 현재 커서가 위치한 단어의 정의로 이동한다.
  • Ctrl + t : 이전 위치로 돌아간다 (이동한 태그의 기록은 스택으로 관리된다).
  • :ts <tag_name> : 태그를 선택할 수 있는 목록을 표시한다. 이후 번호를 입력해 해당 태그로 이동할 수 있다.
  • :tag <tag_name> : 특정 태그로 직접 이동한다.
  • :tn / :tp : 같은 이름의 여러 태그가 있을 경우 다음 태그 / 이전 태그로 이동한다.