21
ULKML – 1 Study 환환 환환 환 환환 환 환환환 환환 2011-09-30

ULKML – 1 Study 환경 구축 및 개발 툴 사용법 정리

Embed Size (px)

DESCRIPTION

ULKML – 1 Study 환경 구축 및 개발 툴 사용법 정리. 2011-09-30. 목 차. Study 환경 구축 사용할 Kernel 소 스 분석 툴. Study 환경 구축. ubuntu-11.04 server 설치 접속 방식 SSH, 220.67.126.xxx 최신 Linux Kernel Source 얻기 $> git clone git ://github.com/sfrothwell/linux-next.git linux /i386 3.1.0-rc7. Kernel 소스 분석 툴. - PowerPoint PPT Presentation

Citation preview

Page 1: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

ULKML – 1Study 환경 구축 및 개발 툴 사용법 정리

2011-09-30

Page 2: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

목 차• Study 환경 구축• 사용할 Kernel 소스 분석 툴

Page 3: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

Study 환경 구축• ubuntu-11.04 server 설치–접속 방식 SSH, 220.67.126.xxx

• 최신 Linux Kernel Source 얻기– $> git clone git://github.com/sfrothwell/linux-next.git

– linux/i386 3.1.0-rc7

Page 4: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

Kernel 소스 분석 툴• VIM• ctags• cscope• vim

Page 5: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM

• charityware : 무료로 사용할 수 있게 하는 대신 자선 단체 기부를 부탁 하는 소프트웨어

• 기회가 된다면 우간다의 가난한 아이를 위해 기부하자

Page 6: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM

• 키보드 만으로 모든 코딩 활동을 할 수 있기 때문에 집중도가 높아 진다 .

Page 7: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM

• 이동– ( 표준 ) hjkl : 방향키– ( 표준 ) w : 다음 단어의 첫 글자

b : 이전 단어의 첫 글자 – ( 표준 ) ^ : 행의 끝으로 이동

$ : 행의 처음으로 이동– ( 표준 ) H, M, L : 커서를 화면의 맨 위 , 중앙 , 맨 아래로 이동– ( 표준 ) z(enter), z., z- : 현재 행을 화면의 맨 위 , 중앙 , 맨 아래로 이동– ( 표준 ) ctrl + u, b : 반 화면 위로 스크롤 , 아래로 스크롤– ( 표준 ) ctrl + b, f : 한 화면 위로 스크롤 , 아래로 스크롤– ( 표준 ) gg, 1G : 문서의 맨 첫 행으로 이동– ( 표준 ) G : 문서의 맨 아래로 이동– ( 표준 ) [n]G : n 번째 행으로 이동– ( 명령라인모드 ) :[n] : n 번째 행으로 이동

Page 8: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM - 편집• 삭제 , 복사– ( 표준 ) x : 현재 커서 위치의 한 글자 삭제– ( 표준 ) dw : 커서 위치의 한 단어 삭제– ( 표준 ) dd : 한 행을 삭제– ( 표준 ) D, d$ : 커서 위치부터 행의 끝까지 삭제– ( 표준 ) yw : 현재 커서 위치의 한 단어 복사– ( 표준 ) yy : 커서 위치의 한 행을 복사앞에 숫자를 넣으면 그 명령 앞의 숫자 만큼 반복하는 규칙이 있다 .

Page 9: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM - 편집• VI 의 레지스터

• “ “ 레지스터 : 바로 이전에 지워진 내용• “0 ~ “9 레지스터 : 지워진 내용이 큐 형식으로

들어감 .• “. 레지스터 : 최근까지 타이핑한 내용• “: 레지스터 : 최근에 명령라인에 입력한 내용• “% 레지스터 : 현재 편집하는 파일 명• “/ 레지스터 : 가장 최근에 검색한 문자열• a~z 까지 사용자가 지정할 수 있는 레지스터

“ “

“0 “1 “2 “3 “4 “5 “6 “7 “8 “9 “- “. “: “%

“#

“/

Page 10: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM - 편집• 잘라내기와 붙여 넣기– ( 표준 ) “[n]p : n 에 해당하는 레지스터에 있는

내용 붙여 넣기• 블록 지정– ( 표준 ) v : 블록 지정 – ( 표준 ) d, y : 복사 , 잘라내기 – ( 표준 ) U, u : 대문자 , 소문자로 만듬

Page 11: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM - 편집• 되돌리기와 되살리기– ( 표준 ) u : 되돌리기– ( 표준 ) ctrl + r : 되살리기

• 문자열 탐색– ( 표준 ) / [ 문자열 ] : 문자열을 정방향 탐색한다 .– ( 표준 ) ? [ 문자열 ] : 문자열을 역방향 탐색 한다 .–위 상황에서 n, N : 다음 문자열 , 이전 문자열

탐색

Page 12: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM - 편집• 문자열 치환– ( 명령라인 ) %s/old/new/g : 문서에 있는 모든 old

문자열을 new 문자열로 바꾼다 .– [ 범위 ]/[ 매칭 문자열 ]/ 치환 문자열 ]/[ 행 범위 ]

• [ 범위 ]– %s : 문서 전체 범위– 2, 4s : 2 행 ~ 4 행사이의 범위– -1, +3s : 현재 커서부터 위로 1 행 아래로 3 행의 범위

• [ 행 범위 ]– g : 전체 행에 걸쳐 치환– 없을 경우 : 한 행에 여러 개의 매칭 문자열이 있더라도 한번만 치환– gc : 매칭되는 문자열에 대해 치환 할 것인지 사용자에게 물어봄

Page 13: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM – 여러 파일 편집• 여러 파일 열기– vim file1.c file2.c file3.c 혹은 – vim *.c–각각의 열린 파일은 VIM 의 파일 버퍼로 이동 .– ( 명령라인 ) ls : 현재 열려있는 파일 확인– ( 명령라인 ) b[ 버퍼 번호 ] : 버퍼간 화면 전환– ( 명령라인 ) sb[ 버퍼 번호 ] : 창을 수평

분할해서 버퍼 열기

Page 14: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM – 여러 파일 편집• 다중 창 사용하기– ( 표준 ) ctrl + w (ctrl 떼고 )n : 새로운 창이

가로로 분할 된다 .– ( 표준 ) ctrl + wv : 현재 편집중인 창이 수직 분할

된다 .– ( 표준 ) ctrl+ww : 커서간 창 이동 – ( 표준 ) ctrl+w_ : 현재 작업 중인 수평 창을 최대로– ( 표준 ) ctrl+w| : 현재 작업 중인 수직 창을 최대로– ( 표준 ) ctrl+w= : 균등 분할된 상태로 맞춤

Page 15: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM – 유용한 기능• 마킹으로 이동– 커서의 특정 위치를 임의의 문자로 마킹해 나중에

표시한 위치로 한번에 돌아가기 .– ( 표준 ) m[ 임의의 알파벳 ] : 마킹 할때– ( 표준 ) ‘[ 임의의 알파벳 ] : 마킹된 위치로 이동

• 전역 마킹 ( A – Z ) : 현재 파일 + 다른 파일간의 마킹이 가능

• 지역 마킹 ( a – z ) : 현재 파일 내에서만 마킹이 가능

• ( 명령라인 ) marks : 마킹 정보확인

Page 16: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM – 유용한 기능• 파일 탐색 기능– ( 명령라인 ) 20vs ./ : 디렉토리 명으로 파일을 열게

되면 해당 디렉토리에 있는 파일들이 브라우징 됨 . 커서를 움직여서 선택하면 해당 파일이 열린다 .

• 빠른 괄호 이동 및 빠른 탐색– 복잡한 if 나 while 문이 중첩 되어 있을 경우 {} 의

범위를 알아보기 쉽지 않다 . 이때– {,} 기호 에서 ( 표준 ) % : 쌍을 이루는 {,} 로

커서가 이동 된다 .– 찾으려는 문자열에서 ( 표준 ) *, # : 빠른 문자열 검색

기능

Page 17: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

VIM – 유용한 기능• 폴딩 기능– 함수가 많은 경우 함수를 접어 보기 편하게 해주는 기능– 함수 시작 부분에 있는 { 위에 커서를 두고 – ( 표준 ) v]}zf : 함수를 접는다 .– 혹은 , 함수를 블록으로 잡고 ( 표준 ) zf – 키가 복잡 하므로 , vimrc 파일에 다음과 같은 내용을

추가해 단축 키를 지정 한다 .• map <F1> v]}zf

– ( 표준 ) zo : 커서 위치의 접힌 부분을 편다 .• map <F2> zo

Page 18: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

• VIM 에서 바로 man page 활용– 현재 커서에 있는 함수의 man page 를 보고 싶을 경우 ,

ma 를 누르면 man page 를 나타 내도록 설정 .– vimrc 파일에 추가 .

func! Man() let sm = expand("<cword>") exe "!man -S 2:3:4:5:6:7:8:9:tcl:n:1:p:o ".sm endfunc nmap ,ma :call Man()<cr><cr>

Page 19: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

ctags

• 프로그래밍 소스 코드에서 태그 ( 전역변수 , 함수 정의 , 매크로 선언 ) 들의 데이터 베이스파일 (tags 파일 ) 을 생성하는 유닉스 명령 .

• 특정 심볼을 찾고자 할 때 이용 • Assembler, ASP, Awk, C, C++, BETA,

Cobol, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, PL/SQL, Python, REXX, Ruby, Scheme, Shell scripts, S-Lang, Tcl, Vera, Verilog, Vim, YACC/Bison 등을 지원

Page 20: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

ctags - 사용법• 분석할 소스의 가장 최 상위 디렉토리에서 $

ctags –R • vim 에서 tags 파일 설정 – ( 명령라인 ) set tags=./tags– ( 명령라인 ) set tags=./tags, /usr/include/

tags– vimrc 파일에 설정해도 무관 .

Page 21: ULKML – 1 Study  환경 구축 및 개발 툴 사용법 정리

ctags - 사용법• ctags 명령어 요약– :ta [ 태그 ] or ctrl + ] : [tag] 가 정의된 위치를

나열하고 선택한 위치로 점프 . 현재 위치는 스택에 push

– po or ctrl + t : 스택 top 에 저장된 위치로pop 하고 그 위치로 점프

– sts [ 태그 ] or stj [ 태그 ] : tag 가 정의된 위치를 나열하고 선택한 위치로 수평분할 창에 표시 .