반응형
중단점 설정은 gdb에서 매우 중요한 기능입니다. 여기서는 간단한 명령어 설명을 한 후 다음에서 중단점을 사용해 분석하는 방법에 대해 설명드리겠습니다.
- 중단점 (Break Point) 설정하기 (break / b)
중단점은 함수이름이나 코드 라인번호 등을 통해 설정할 수 있습니다. 여러분들이 중단점을 설정 후 프로그램을 실행하면 해당 위치가 만약 수행된다면 자동적으로 해당 지점에서 실행이 중단됩니다. 이 시점의 모든 정보를 여러분들이 확인할 수 있습니다. 이 중단점에서 즉 해당 상태에서 변수나 스택구조, 어셈블리 등 다양한 정보를 얻을수도 있고 여러 동작을 조작할 수도있습니다.
(gdb) b sum
Breakpoint 1 at 0x400570: file example1.c, line 6.
위의 예제 코드에서 선언했던 sum이란 함수 이름을 중단점으로 주고 실행해 봅시다. 실행은 run / r 명령어를 사용합니다.
(gdb) r 1 2
Starting program: /home/linuxias/privateProject/MyBox/example/gdb/example1 1 2
Breakpoint 1, sum (a=1, b=2) at example1.c:6
6 return a + b;
(gdb)
run / r 명령과 함께 입력 인자로 1 2를 입력해줍니다. 그럼 main() 함수부터 실행되고 sum() 함수가 실행될 때 멈추게 됩니다.
여러개의 중단점 생성
확인하고자 하는 중단점이 하나가 아니라 여러개 일 수도 있고 분석이 완료 후 불필요한 중단점을 제거하고자 하는 경우도 있을 겁니다. 그런 경우에는 아래와 같이 해결해줍니다. 중단점 생성은 앞서 말씀드린 중단점 생성하기와 동일합니다.
$ gdb -q example1
Reading symbols from example1...done.
(gdb) b sum
Breakpoint 1 at 0x400570: file example1.c, line 6.
(gdb) b main
Breakpoint 2 at 0x400589: file example1.c, line 15.
break / b 명령어로 중단점을 2개 생성하였습니다. sum 함수와 main 함수를 중단점으로 설정하였습니다.
설정한 중단점 정보 확인하기 (info break)
(gdb) info break
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400570 in sum at example1.c:6
2 breakpoint keep y 0x0000000000400589 in main at example1.c:15
특정 중단점 삭제 (delete / d {breakpoint number})
(gdb) info break
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000400570 in sum at example1.c:6
2 breakpoint keep y 0x0000000000400589 in main at example1.c:15
(gdb) d 1
(gdb) info break
Num Type Disp Enb Address What
2 breakpoint keep y 0x0000000000400589 in main at example1.c:15
(gdb)
2개의 중단점을 설정한 후 delete / d 명령어로 1번 중단점을 제거합니다. 그 후 info break로 설정한 중담점 정보 확인 시 1번 중단점이 제거된 것을 확인할 수 있습니다.
반응형
'Linux > Debugging & Testing' 카테고리의 다른 글
[커널분석] Architecture 별 분석을 위한 설정 (ctags & cscope) (0) | 2018.08.21 |
---|---|
[gdb] The GNU Debugger : 3. Stack 정보 분석하기 (0) | 2018.08.15 |
[gdb] The GNU Debugger : 1. Introduction (2) | 2018.08.13 |
[SOLVE] valgrind: failed to start tool 'memcheck' for platform... ': No such file or directory (0) | 2018.07.27 |
[valgrind] Memory debugging & profiling tool (0) | 2018.07.26 |