Linuxias
Developer's Delight
Linuxias
  • Category
    • AI
      • Deep Learning
      • Machine Learning
      • Data Science
      • Framework
      • MLOps
      • Paper-Review
      • Tips
    • Android
      • Kotlin
      • Component
      • Compose
      • Compose UI
      • Material
      • Testing
    • Software Architecture
      • Architecture Pattern
      • Design Pattern
      • Requirement Engineering
    • Linux
      • Compile & Link
      • Command & Tool
      • Container
      • Debugging & Testing
      • Profiling
      • Kernel Analysis
      • Server
      • Shell Script
      • System Programming
    • Language
      • Carbon
      • C,C++
      • C#
      • Java
      • Python
    • ETC
      • Data Struct | Algorithm
      • git
      • Security
    • Book
    • 경제공부
      • 세금
      • 부동산
hELLO · Designed By 정상우.
Linuxias

Developer's Delight

Linux/Debugging & Testing

[gdb] The GNU Debugger : 2. 중단점 설정하기

2018. 8. 14. 23:05
반응형
중단점 설정은 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
    'Linux/Debugging & Testing' 카테고리의 다른 글
    • [커널분석] Architecture 별 분석을 위한 설정 (ctags & cscope)
    • [gdb] The GNU Debugger : 3. Stack 정보 분석하기
    • [gdb] The GNU Debugger : 1. Introduction
    • [SOLVE] valgrind: failed to start tool 'memcheck' for platform... ': No such file or directory
    Linuxias
    Linuxias
    I want to be a S/W developer who benefits people.

    티스토리툴바