1/04/2014

Linux 소스 분석 Tools

1. Linux 소스 분석 Tools

linux에서 사용하는 편집기는 vim를 사용하며, 소스분석을 간편하게 도와 주는 것이
ctags이다. 그리고 이 부족한 부분을 메워주는 것이 cscope인데, 사실 cscope는 잘사용하지 않게되는 것 같다.


2. How To install tools 

 $ sudo apt-get install vim ctags cscope 

편집기 vim과 catag과 csope를 설치하자.


3. CTAGS 생성 및 CSCOPE 파일 생성


 $ cd ~/linux   // kernel 로 이동 
 $ ctags -R    // tags file 생성  
 $ ls -l tags  // tags 생성확인  


 $ cat./mkcscope.sh
#!/bin/sh
rm -rf cscope.files cscope.files
find . \( -name '*.c' -o -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.s' -o -name '*.S' \) -print>cscope.files
cscope -i cscope.files 

$ cd ~/linux        // kernel 로 이동 
$ ./mkcscope.sh     // cscope.file 생성 
$ ls cscope.files   // cscope.file 확인 


4. 관련설정 


$ vi ~/.vimrc
set tags=./tags 
set tags+=~/am437x/works/board-support/u-boot-2014.07+gitAUTOINC+fb6ab76dad-gfb6ab76/tags

set csprg=/usr/bin/cscope

set csto=0 “(숫자 0)
set cst
set nocsverb

if filereadable(“./cscope.out”)
cs add cscope.out
else
cs add /usr/src/linux/cscope.out
endif
set csverb


5. 사용법 

기본적으로 vim에서 연결하여 동작하도록 하며, 아래와 같이 명령을 주어 사용한다.

5.1 CTAGS 기본 사용법

 
Ctrl+]          :  커서에 위치한 정의된 함수로 이동 
Ctrl+t          :  이전위치로 이동 
:ts keyword     :  keyword와 일치하는 태그목록 출력하고 선택한다
:tj keyword     :  ts와 동일하지만 목록이 한개일 경우 해당태그로 이동, 두개 이상 출력
:sts keyword    : tj와 유사하나 새창에 관련정보 출력  
:ta /keyword    :  keyword가 포함된 태그를 검색

:tn             : 다음 태그 이동
:tp             : 이전 태그 이동
tags            : 이동한 태그 히스토리 출력 

5.2 CSCOPE 기본 사용법 

 
:cs help
:cs find c symbol

:cs help
syntax on  : 구문강조 기능 사용
cscope 명령:
add  : 새 데이터베이스 더하기         (사용법: add file|dir [pre-path] [flags])
find : Query for a pattern            (사용법: find c|d|e|f|g|i|s|t name)
       c: 이 함수를 부르는 함수들 찾기
       d: 이 함수에 의해 불려지는 함수들 찾기
       e: 이 egrep 패턴 찾기
       f: 이 파일 찾기
       g: 이 정의 찾기
       i: 이 파일을 포함하는 파일들 찾기
       s: 이 C 심볼 찾기
       t: 이 문자열 찾기
help : 이 메시지 보이기               (사용법: help)
kill : 연결 끊기                      (사용법: kill #)
reset: 모든 연결 다시 초기화          (사용법: reset)
show : 연결 보여주기                  (사용법: show)


https://ysoh.wordpress.com/2012/04/09/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-vim-%EC%84%A4%EC%A0%95-vimrc/

http://treetale.iptime.org/wordpress/946