[질문] ctags
글쓴이: naisr00t / 작성시간: 금, 2004/08/20 - 10:38오전
1.
소스를 분석할려고 하는데 저는 cscope 불편하더군요.
그러니까 소스를 보면서 특정키 가령, Ctrl + ] 등을 누르면 따라갈수 있는 것이 편한데, cscope은 그렇지 않은 듯 합니다.
2. ctags 에서 표준함수
저는 /usr/include 에서 ctags -R * 를 만들었고,
저의 source 디렉토리 /root/asi/, /root/asi/example/ 중
cats -R * 를 했습니다.
그리고 저의 .vimrc 에는 다음과 같이 설정되어 있습니다.
set tags=./tags,tags
set tags+=/usr/include/tags,/root/asi
그런데, /root/asi/example/cknull.c 소스를 분석중에 getopt() 은 따라가는데,
가령, strtol() 은 따라가지 못하더군요. 가령, printf() 또한 따라가지 못하구요.
우리가 사용하는 표준함수들 /usr/include/ 이하에 있는 모든 헤더파일을 따라갈 수 있는 방법 없나요?
3. project.vim 플러그인 사용법좀 간단히라두 알려주시면 안될까요?
Forums:
자신이 보고자하는 소스를 한 디렉토리 안에 넣고 ctags를 돌리면 다
자신이 보고자하는 소스를 한 디렉토리 안에 넣고 ctags를 돌리면 다 볼 수 있습니다.
그런데, 현재 디렉토리에 없는 소스를 볼려고 하니 당연히 안되는 겁니다.
그리고 이런 표준 함수들은 소스를 직접 구해서 보시면 되구요.
근데... 이런 표준 함수의 소스단 까지 볼 필요 까지가 있나요?
있다면 벌써 찾아서 수정 중이실거 같은데...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
cscope는 ctags와 같이 사용하는것이 좋은듯 합니다.[co
cscope는 ctags와 같이 사용하는것이 좋은듯 합니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
[질문] 이해가 잘... ^^
getopt() 는 /usr/include/sasl/saslplug.h 로 링크 됩니다.
그런데, printf() 도 /usr/include/stdio.h 에 있는데 왜 링크가 안되는 것이 궁금한거죠.
[quote]자신이 보고자하는 소스를 한 디렉토리 안에 넣고 ctag
naisr00t님께서 설정한대로 하면 각각의 디렉토리의 tags화일을 순차적으로 검색합니다.
vim help에 보면.. (:h tags)
CTRL-] 혹은 tag {ident}는 현재 커서 및에 있는 키워드의 "definition"
으로 점프를 합니다..
그런데 /usr/include/stdio.h에는 printf등의 함수의 declaration만 있지 않나요? 그래서 못찾는거 같습니다. naisr00t님 /root/asi/example/ 이하 디렉토리에는 찾으시는 함수의 선언과 구현을 가진 h, c 화일이 다 있어서 getopt()를 찾은거 같고요..
tags만 못하지만 set path=/usr/include하셔서 원하는 원하는 signature를 가진 헤더를 gf로 열고 /\<printf\>하시는거는 어떤가요 ^^
그리고 저는 일단 .vimrc화일에
..
let _project = '~/project/p.project'
map ,p :Project <c-r>_project<cr><cr>
..
요렇게 씁니다.
p.project 화일은
그리고 in.vim, out.vim화일은 각각에 set tags등등를 설정해줄 수 있습니다..
:h project하면 그리 어렵쥐 않습니다.
Life rushes on, we are distracted
Re: [질문] 이해가 잘... ^^
소스 위치는 어디죠?
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
저는 cscope만 사용하는데 불편함이 없네요.. :D ㅎㅎㅎ
저는 cscope만 사용하는데 불편함이 없네요.. :D
ㅎㅎㅎ 전 이렇게 사용합니다.
프로젝트 root 디렉토리에서
해서 cscope 참조파일을 만들고...
.vimrc 파일에
를 정의해 놓으면.. 프로젝트 디렉토리 이하에선 편하게 이동해 다닐수 있더군요
(cscope plugin 넣어주면 ctrl + ] 로 함수 찾아 아닐수 있던데요?)
:wink:
Re: [질문] 이해가 잘... ^^
권한은 루트로 접속했구요
/root/asi/
/root/example/
위의 두개의 디렉토리에 소스가 있습니다.
제가 잘 이해를 못 할 수도 있습니다.
이상하게
/usr/include/time.h
/usr/include/linux/time.h 이렇게 /usr/include/ 이하에 되는 것은 되고
안되는 것은 왜 안되는 것인지 모르겠네요.
굳이 printf 를 찾으려고 하는게 아니라, 왜 안되느냐는거죠?
그리고 되게 하는 방법을 없을까해서요?
[다른 질문] ctrl + [ 이게 안되는데요 어떻게 해야 하나요?
질문이 3개입니다 ^^;;;
1) ctrl + [ 이게 안되는데요 어떻게 해야 하나요?
2) 각각의 dir에 있는 tags 파일을 vi에서 자동으로 참조하게 할 수 없나요?
3) make에서 자동으로 tags 를 생성하게 하려면 어떻게 make파일을
만들어야 하나요?
OTL 즐!!!! (좌절 금지!!!)
1)은 이게 원래 뭐하는 명령어 인가요?저는 t, ] 이것 밖에 안쓰
1)은 이게 원래 뭐하는 명령어 인가요?
저는 t, ] 이것 밖에 안쓰는데..
2) 이건 .vimrc에서 설정을 해주는 방법 밖에 없을것 같은데요.
지난 번에도 이에 관한 쓰레드를 본것 같은데.
다른 방법이 있을 수도.
3)
tags:
@if [ "$$OSTYPE" = "FreeBSD" ] ; then \
exctags -R *; \
else \
ctags -R *.[cChH]; \
fi
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
답글 감사드립니다. ^^
전 ctrl + [ 키가 ctrl + t 인지 몰랐습니다.
좋은 하루되세요.
ps: make파일은 분석하기 힘드네요. 그냥 갖다 붙이겠습니다. ^^;;
OTL 즐!!!! (좌절 금지!!!)
[다른 질문] ctags에 대한 다른 질문입니다.
안녕하세요 ^^
1) ctags를 이용해서 어떤 함수를 호출하는 함수리스트를 보는 방법 없나요?
2) ctags를 이용해서 어떤 변수를 사용하는 함수리스트를 보는 방법 없나요?
ctags로 힘들다면 다른 방법이 있으면 가르쳐주세요.
고수님의 좋은 답글을 부탁드립니다.
OTL 즐!!!! (좌절 금지!!!)
Re: [다른 질문] ctags에 대한 다른 질문입니다.
ctags은 불가능하고 cscope를 이용하면 가능합니다.
그런데 귀차니즘으로 저는 그냥 find 를 사용해버립니다. ^^
cscope 에 대한 다른 질문입니다.
안녕하세요.
cscope로 특정 함수가 불러들이는 함수를 검색하는 기능이 있습니다.
그런데 소스상에는 분명히 불러들였는데,
검색하면 안나오는 함수가 있네요.
정밀하게 cscope를 동작하게 하는 방법 없나요?
OTL 즐!!!! (좌절 금지!!!)
몇몇 분께서 소개한 대로 cscope나 ctags에 파일을 넘길 때, 절
몇몇 분께서 소개한 대로 cscope나 ctags에 파일을 넘길 때, 절대 경로를 넘기는 것이 좋습니다.
find `pwd` 로 파일들을 찾으면 절대 경로를 넘길 수 있죠.
저는 이 일을 30분에 한번씩 crontab으로 모든 프로젝트 트리와 glibc source에 대해서 tag 파일을 만들어 홈에 둡니다.
glibc 의 소스는 현재 설치된 것과 동일한 것을 받아서 풀어 놓고 필요할 때 마다 참조하는 것이 좋습니다.
처음 질문하신 분께서 제기하신 printf 등을 못찾는 것은, glibc가 weak alias를 사용하기 때문입니다.
앞에 __ 를 붙이고 시도해 보세요.
참고로 저는 printf가 #define 으로 되어 있더군요.
그리고 glibc 같은 경우는 소스안에 아키텍쳐별로 최적화된 소스가 많기 때문에 ^] 보다는 g] 를 사용하여 선택할 수 있도록하는 것이 좋더군요.
---
http://coolengineer.com
ctag한글 매뉴얼 없나요
ctag한글 매뉴얼 없나요
2004년도 질문이라 지금은 해결하셨을지 모르겠지만...
아래 달린 답글들 중에 해법이 없어 제가 해결한 방법을 링크해 드립니다.
저도 이 문제로 고민했었거든요. ^^
http://kldp.org/node/79117
시그너쳐: ./configure --prefix=/usr; make; sudo checkinstall
댓글 달기