2장 Eclipse 맛보기 및 기본 개념

Java Application 실행: Alt + Shift + X, J
화면이 모자랄 때 : Fast View 이용한다

3장 JDT(Java Development Tools) 기본 사용법

Ctrl + 1 : quick fix
Ctrl + T : Quick Type Hierarchy 뷰. Ctrl + T 누르면 슈퍼타입 / 서브타입 토글됨.
Ctrl + O : Quick Outline

- 소스코드 네비게이션
F3 : open declaration
소스 코드 이동 (히스토리 기반) : Alt + 왼쪽화살표(오른쪽 화살표)
소스 코드 이동 : Ctrl + 마우스 클릭

특정 행 이동 : Ctrl + L
에러, 경고, 태스트 이동 : Ctrl + .(,)
BreadCrumb : Alt + Shift + B

Ctrl + Shift + L 두번 누름 : Preference 다이얼로그
Mark Occurrences : Alt + Shift + O
에디터 이동 : Crtl + (Shift) + F6

Ctrl + F6 : 에디터 간 전환
Ctrl + F7 : 뷰 간 전환
Ctrl + F8 : 퍼스펙티브 간 전환
F12 : 에디터로 포커스 돌아옴

- 검색
에디터에서 편집 중인 파일:
Find / Replace 다이얼로그 : Ctrl + F
Incremental search : Ctrl + (Shift) + J + 검색어
문자열 먼저 선택 : Ctrl + (Shift) + K

- 그 밖의 유용한 기능
스크랩북 : Ctrl + N , Scrapbook Page 선택 후, 코드 입력한 뒤 Ctrl+Shift+D 키(Display)  실행

- Call Hierarchy
Ctrl+Alt+H

- import문 정리하기
Ctrl+Shift+O

- 주석 처리
 /* */ 타입 주석 설정: Ctrl + Shift + / 키
 /* */ 타입 주석 해제: Ctrl + Shift + \ 키

// 타입 주석 토글 : Ctrl + / 또는 Ctrl + 7

- 키 설정 바꾸기
Ctrl+Shift + L : 키 어시스트 팝업
Ctrl+Shift + L 두번 : Preferences 다이얼로그


4장. 디버깅


Breakpoints 뷰
Hit Count
가상머신 멈추기 (Suspend Thread)
메서드 브레이크포인트 (Entry and exit)

F5: Step Into
F6: Step Over
F7: Step Return
F8: Resume
Drop to Frame

- 스텝 필터링 (필터 규칙 4가지)
Filter synthetic methods: 모든 synthetic 메서드를 필터링 한다. synthetic 메서드란, 어떤 클래스를 컴파일할 때 언어 스팩을 만족시키기 위해 컴파일러가 임의로 정의해 바이트 코드에 추가한 메서드를 말한다. 이런 메서드는 일반적으로 애플리케이션 프로그래머가 디버깅할 필요가 없다.
Filter static initializers: 모든 클래스의 정적 초기화 블록과 정적 멤버 초기화 코드를 필터링한다.
Filter constructors: 모든 생성자를 필터링한다.
Step through filters: 필터링 대상이 되는 클래스 안에서 필터링 대상이 아닌 클래스의 메서트를 호출하는 경우가 있을 때 필터링 대상이 아닌 클래스의 코드포 스탭을 옮긴다.

Variables 뷰
수식평가: Display(Ctrl + Shift + D), Inspect(Ctrl + Shift + I), Watch


그 밖에 유용한 단축키(펌)

Ctrl + M : 전체화면 토글
Ctrl + E : 페이지 이동
Ctrl + Q : 마지막 편집 위치로 이동
Ctrl + D : 한줄 삭제
Ctrl + O : 메소드 리스트를 확인
Ctrl + 1 : 컴파일 해결 힌트
Ctrl + L : 원하는 소스 라인으로 이동
Ctrl + .(,) : 다음(이전) 오류로 이동
Ctrl + I : 들여쓰기 자동 수정
Ctrl + /(\) : 주석(해제)
Alt + <-(->) : 이전(다음) 작업 화면
Ctrl +(Shift)+ K : 문자열 찾기(위로)
Ctrl +(Shift)+ W : 파일 닫기(전체)
Ctrl +(Shift)+ F6 : Ctrl+Tab 기능
Alt + Shift + 방향키 : 블록선택(해제)
Alt + Up(Down) : 현재 줄 이동(위)
Alt + Shift + R : 메소드 리네임
Ctrl + F7 : 뷰간 전환
Ctrl + F8 : 퍼스펙티브간 전환
F12 : 에디터로 포커스 위치
Ctrl + Shift + /(\) : 블럭주석(해제)
Ctrl + Shift + O : 자동 import
Ctrl + Shift + M : 특정 클래스 Import
Ctrl + Shift + S : 모두 저장
Ctrl + Shift + W : 모두 닫기
Ctrl + Shift + T : 클래스 찾기
Ctrl + Shift + R : 자원 열기
Ctrl + Shift + Y : 대문자를 소문자로
Ctrl + Shift + X : 소문자를 대문자로
Ctrl + Shift + E : 줄끝 까지 삭제
Ctrl + Shift + F : 코드 자동 정리
Ctrl + Shift + L :
Ctrl + Alt + H : 메소드 보기
Alt + Shift + S : 메뉴 팝업
Alt + Shift + X : 실행 단축키 보기
Ctrl + Shift + Space  : 메소드의 파라미터 목록 보기
Ctrl + Shift + G  : 메써드나 필드를 참조 하고 있는 곳


'프로그래밍 > tools' 카테고리의 다른 글

GDB 사용법  (0) 2011.02.07

실행방법

gdb program_name [core|pid]

소스 보기

내용 출력
> list

다음 페이지 보기
> enter

특정 페이지 보기
> l [line_number]

함수 보기
> l [func_name]

멤버함수 보기
> l [Class::func_name]

다른 파일의 함수 보기
> l [file_name:func_name]

이전 행의 출력
> l -

출력 행의 수 조절
> set listsize 20

브레이크 포인트

실행
> r

프로그램 스택 추적
> bt

그 밖에 명령어

b func func 함수 시작 부분에 브레이크 포인트 설정
b 10 10행에 브레이크 포인트 설정
b file.c:func file.c 파일의 func 함수에 브레이크 포인트 설정
b file.c:10 file.c 파일의 10행에 브레이크 포인트 설정
b +2 현재 행에서 2개 행 이후 지점에 브레이크 포인트 설정
b -2 현재 행에서 2개 행 이전 지점에 브레이크 포인트 설정
b *0x8049000 0x8049000 주소에 브레이크 포인트 설정(어셈블리로 디버깅 시 시용)
b 10 if var == 0 변수 var 값이 0 일 때, 10행에 브레이크 포인트 설정

브레이크 명령어 상태 설정
> condition [break_point no.] var == 0

중지
> disable [break_point no.]

시작
> enable [break_point no.]

일회용 브레이크 포인트 지정
> tb

삭제 명령

cl func func 함수의 시작 부분에 브레이크 포인트 지움
cl 10 10행의 브레이크 포인트 지움
cl file.c:func file.c 파일의 func 함수에 브레이크 포인트 지움
cl file.c:10 file.c 파일의 10행의 브레이크 포인트 지움
d 모든 브레이크 포인트를 지움

브레이크 포인트 리스트
> info breakpoints

자동 완성
> TAB

프로그램 실행

시작
> r arg1 arg2

종료
> k

s 현재 행 수행 후 정지, 함수 호출 시 함수 내부로 들어감
s 5 s를 5번 입력한 것과 동일
n 현재 행 수행한 후 정지, 함수 호출 시 함수 수행 후 다음 행으로 감
n 5 n을 5번 입력한 것과 동일
c 브레이크 포인트를 만날 때까지 계속 진행

그 밖에 주요 진행 명령어

u 현재 루프를 빠져 나감
finish 현재 함수를 수행하고 빠져 나감
return 현재 함수를 수행하지 않고 빠져 나감
return 123 현재 함수를 수행하지 않고 빠져 나감, 리턴 값은 123
si 현재의 인스트럭션을 수행, 함수 호출 시 함수 내부로 들어감
ni 현재의 인스트럭션을 수행, 함수 호출 시 함수 내부로 들어가지 않음

와치 포인트

와치 포인트를 설정하면 변수 값이 변할 때마다 break가 걸리면서 멈춘다
> watch [variable]

변수와 레지스터 값 검사

지역 변수의 출력
> info locals

전역 변수의 출력
> info variables

개별 변수의 출력
> p [변수명|함수명]

포인트 변수의 출력 (c 문법과 동일)
> p **ppt

레지스트 값 출력
> p $[레지스트명:eax|ebx|ecx|edx|eip]

레지스트 값 보기
> info registers

MMX를 비롯한 특수 레지스트 값 전체 보기
> info all-registers

포인터가 가리키는 구조체 배열 출력
> p *pt@[구조체 배열 크기]

포인터가 가리키는 구조체 배열의 첫째 원소만 출력
> p *pt

  • 중복된 변수명이 있을 경우,

특정한 파일의 전역변수를 지정하고자 할 때,
p '[파일명]'::[변수명]
특정한 함수의 static 값을 확인하고자 할 때,
p [함수명]::[변수명]

특정 변수를 지정해서 출력
> p/[출력형식]

t 2진수로 출력
o 8진수로 출력
d 부호가 있는 10진수로 출력(int)
u 부호가 없는 10진수로 출력(unsigned)
x 16진수로 출력
c 최초 1바이트 값을 문자형으로 출력
f 부동 소수점 값 형식으로 출력
a 가장 가까운 심벌의 offset을 출력

타입이 틀릴 경우, 타입을 변환하여 출력
> p (char *)vstr

특별한 위치 지정
> p lstr + 4
> p (array[1] + 1)

변수 값 설정
> p lval = 1000

변하는 변수 값을 자동으로 display하기

display [변수명] 변수 값을 매번 화면에 보여준다
display/[출력형식] [변수명] 변수 값을 출력 형식으로 보여준다
undisplay [디스플레이 번호] 디스플레이 설정을 없앤다
disable display [디스플레이 번호] 디스플레이 설정을 일시중단한다
enable display [디스플레이 번호] 디스플레이 설정을 활성화한다

스택의 상태 검사

스택 프레임 보기
> bt

frame [frame_no] n번 스택 프레임으로 변경
up 상위 스택 프레임으로 이동
up [frame_no] n번 상위 스택 프레임으로 이동
down 하위 스택 프레임으로 이동
down [frame_no] n번 하위 스택 프레임으로 이동
info frame 스택 프레임 정보를 출력
info args 함수가 호출될 때 인자를 출력
info locals 함수의 지역변수 출력
info catch 함수의 예외 핸들러 출력

함수 모듈 테스트
> call func(args...)

프로세스에 시그널 전달
> signal SIGKILL

메모리 특정 영역에 값을 설정
> set {타입}[주소] = [값]

실행 중인 프로세스 디버깅

attach [PID]

  • 멀티 프로세스의 경우도 attach를 사용하여 디버깅하면 된다.

멀티쓰레드 프로그램

pthread_join 함수가 호출되기 전에 pthread_create가 호출된 직후,
브레이크 포인트를 일반 프로그램과 같이 설정한다.

쓰레드 정지
> ctrl+z

프로세스 정지
> ctrl+c

쓰레드 정보 얻기
> info threads

브레이크 포인트 설정
> b [행번호] thread [브레이크될 쓰레드 번호]

쓰레드 이동
> thread [thread_no]

라이브러리 디버깅

소스 파일 정보 알려주기
> dir /usr/src/debug/glibc-2.3.2-201008303934/stdio-common

그 밖에 유용한 도구

-GUI 디버거 DDD
> ddd [prog_name] [core|pid]

strace
> strace -fFp [PID]
-f : 자식 프로세스의 시스템 콜까지 출력
-F : vfork()에 의해 생성된 프로세스까지 출력
-p : pid를 인자로 받는다

프로세스가 호출하는 공유라이브러리 알아내기
> ltrace

'프로그래밍 > tools' 카테고리의 다른 글

Eclipse 3/e  (0) 2011.08.09