질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

ctag와 cscope를 사용하는 이유..?

작성자 정보

  • 임근식 작성
  • 작성일

컨텐츠 정보

본문

 

ctags라는게 프로그래밍 소스 코드의 태그 들의 DB를 생성하는거라고 했는데 이를 왜 하는건가요?
그리고 ctags라는걸 사용한다면 커널같은 거대 프로젝트를 분석할때 사용한다고 하던데
프로젝트를 분석하는 이유와 커널 이라는게 무엇인지 알기 쉽게 설명해주셨으면 합니다.

 

--->  가능한 쉽게 설명을 드려보겠습니다. 윈도우에서  Source Insight 3.X 또는 Understand C++이라는
툴을 들어보셨을지 모르겠습니다. 단순한 소스가 아니 큰 부피의 소스를 특정 회사가 인수를 하게 되었
을 떄 소스의 유지보수와 개선 및 업데이트를 위해서 기존에 작성된 소스의 분석이 선행되어야겠씁니다.
이경우에 이런 툴이 필요한데 리눅스에서는 Ctag/Cscope라는 것이 사용됩니다. Ctag로  소스 분석에
유용하게 쓰이나 2%부족한 점을 채우기 위해 나온 것이 Cscope입니다.
리눅스 초보자인 경우에 콘솔모드에서 vim을 이용하여 작업하는 것이라 익숙치 않을수 있씁니다.
그래서 웹기반으로 소스를 분석할수 있도록 하기 위해 LXR(Linux Cross Reference)라는 것이 나왔으니
이툴을 한번 공부해보시기 바랍니다. 최근에는 리눅스를 데스크탑으로 사용하는 개발자가 상당히
많이 늘어나면서 리눅스용 Understand C++(유료)이 나왔으며, 제경우에는 리눅스(FC5)에서
이제는 이툴을 하루종일 애용 합니다.

이정도면 전체적인 이해가 되셨을 겁니다.  이제 말씀하신 Ctag에 대해 좀더 자세히 알아보도록
할까요?

* 커널의 디렉토리를 ctags로 분석 방법
#> cd /usr/src/linux.2.6.10
#> make tags
  ( #> ctags *.[ch] ------> *.c and *.h 파일의 태그를 정의함.)
  ( #> ctags -R . --------> 일반프로그램의 루트디렉토리 )
#> cd /usr/src/linux.2.6.10
#> vi ./include/linux/sched.h
  주의사항) vim으로 파일을 열때  tags파일이 있는 디렉토리에서 파일을 오픈해야함.

. 기본적인 명령어 모음
   . ctrl+] : 한단계 안쪽으로 들어감.
   . ctrl+t : 한단계 밖으로 나옴.
   . g]     : 커서에 있는 함수/변수 리스트로 보이기
   . [i     : 함수 프로토 타입 확인
   . :[count]po[p] : 현재 entry보다 count수 만큼 전의 entry로 이동 (예: 3po )
   . :[count]ta[g] : 현재 entry보다 count수 만큼 다음의 entry로 이동 (예: 2ta )
   . :tags         : 현재 tag stack을 보여주는 명령

 

*  cscope 파일 만들기
      #> find ./ -name '*.[chCHsSxX]' > cscope.files
      #> cscope -d (기존의 database 이용하기)


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,042 명
  • 현재 강좌수 :  35,846 개
  • 현재 접속자 :  133 명