DDD 사용법

1. DDD 란?
DDD(Data Display Debugger)는 GUI 모드를 제공하는 강력한 디버거 입니다.
DDD의 가장 큰 장점은 아무리 복잡한 자료구조와 구조체도 비쥬얼하게 확인할 수 있는 환경을 제공한다는 것입니다.
또한 gdb와 달리 마우스 클릭만으로 디버깅이 가능하기 때문에 쉽게 익힐 수 있습니다.
그럼 짧은 설명을 끝내고 예제를 통해 DDD 사용법을 익혀보도록 하겠습니다.

2. DDD 설치하기
설치 환경 : Ubuntu

$ sudo apt-get install ddd

3. DDD 실행하기
ddd는 다음 4가지 방법으로 실행 가능합니다.

$ ddd
$ ddd []
$ ddd [] [core ]
$ ddd [] [ PID]

4. 예제를 통한 DDD 사용법 소개
예제 프로그램 작성

$ mkdir $HOME/ddd_test
$ cd $HOME/ddd_test
$ vim test.c
$ gcc \-g \-o test test.c

5. DDD 실행

$ ddd bugprg

ㅇ DDD 창
소스창 : 브레이크 포인트 설정, 자료구조 선택 등에 사용됩니다.
명령창 : ddd 명령어 집합을 나타내며, 사용자는 이를 통해 ddd에게 명령을 내립니다.
gdb 콘솔 : gdb에게 직접 명령을 내리거나 ddd에서 print 명령에 대한 결과 출력 시 사용되는 창입니다.

ㅇ 명령어 설명
Interrupt : 프로그램 강제 종료.
Step : 프로그램을 한 행씩 수행. 함수 호출을 만나면 함수 내부로 들어감.
Next : 프로그램을 한 행씩 수행. 함수 호출을 만나면 함수 내부로 들어가지 않음.
Stepi : 어셈블리 레벨에서 명령어 하나씩 수행. Step과 같이 함수 호출을 만나면 함수 내부로 들어감.
Nexti : 어셈블리 레벨에서 명령어 하나씩 수행. Next와 같이 함수 호출을 만나면 함수 내부로 들어가지 않음.
Until : 반복문을 벗어남.
Finish : 함수를 벗어남.
Cont : 다음 브레이크 포인트를 만날 때까지 계속 수행.
Kill : 프로그램 수행 중료.
Up : 상위 스택 프레임으로 이동.
Down : 하위 스택 프레임으로 이동.
Undo : 이전 상황으로 자료구조 값들을 되돌림.
Redo : Undo의 반대.
Edit : 소스의 내용이 수정되었다면 새로운 소스를 소스 창에 보일 때 사용.
Make : 프로그램을 새로 컴파일.

ㅇ 브레이크 포인트 설정
. 브레이크 포인트를 설정하려고 하는 행이 시작되는 지점에서 마우스 오른쪽 버튼 클릭.
. <font color=blue>Set Breakpoint 메뉴를 선택</font>하면 행 앞에 STOP 마크가 찍히면서 브레이크 포인트 설정.
. 명령창에서 Run 버튼을 클릭하면 프로그램이 수행되고 브레이크 포인트가 설정된 부분에서 멈춤.

ㅇ 메뉴 설명
. Set Temporary Breakpoint : 일회성 브레이크 포인트 생성. x가 붙은 STOP 마크로 표현.
. Continue Until Here : 반복문 수행 중 각 반복 후 멈출 위치를 지정.
. Set Execution Position : 프로그램 실행 경로를 지정한 위치로 점프.

ㅇ 브레이크 포인트에 조건 걸기
. 브레이크 포인트에서 마우스 오른쪽 버튼 클릭.
. Properties 메뉴 선택.
. Condition 속성 설정. ex) b 10 if i h1. 0

ㅇ 메뉴 설명
. Disable Breakpoint : 브레이크 포인트를 일시적으로 끔.
. Delete Breakpoint : 설정한 브레이크 포인트 제거. 자료구조 보기 ==
- 소스창에서 자료구조를 확인하고자 하는 구조체 변수 또는 포인터 변수 선택.
- 마우스 오른쪽 버튼 클릭.
- Display 변수명 메뉴 선택.
- 데이터 창이 활성화 되면서 선택한 변수의 자료구조가 비쥬얼하게 표현됨.

You may also like...

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x