일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 신촌 소문난집
- promise메서드
- graphql 400
- 도그존
- 앙버터마카롱
- 고르드
- graphql react native
- 예쁜술집 예술
- 홍대 예술
- 비동기배열처리방법
- 비동기배열
- graphql with RN
- useMutation error
- 잠실새내 도그존
- 토라비
- 잠실새내
- promise처리
- graphql
- 지보싶 신촌점
- 화이트해커를 위한 웹 해킹의 기술
- apolloclient
- graphql mutation error
- typescript
- graphql with reactnative
- 홍대 토라비
- 화이트 해커를 위한 웹 해킹의 기술
- 금별맥주
- 홍대 카페 장쌤
- 운정 소바동
- apollo react native
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
gdb 사용하기 본문
gcc 컴파일
:실행가능한 파일을 만든다.
:gcc -o 실행파일명 소스파일명(*.c)
:gcc 소스파일명(*.c) -o 실행파일 명
컴파일 과정
소스파일 컴파일-> 오브젝트 파일(*.o) 생성-> 실행파일 생성-> 오브젝트 파일 삭제
gcc 옵션
-
-S: cc1으로 전처리된 파일을 어셈블리 파일로 컴파일까지만 수행하고 멈춘다. (*.s)
-
-c: as에 의한 어셈블까지만 수행, 링크를 수정하지 않는다.
-
-v: gcc 가 컴파일을 어떤 식으로 수행하는지를 화면에 출력한다.
-
--save-temps: 컴파일 과정에서 생성되는 전처리 파일(*.i)과 어셈블리 파일(*.s)를 지우지 않는다.
-
-W: 합법적이지만 모호한 코딩에 대해 경고를 보낸다.
-
-Wall: 모든 모호한 코딩에 대해서 경고를 보낸다.
gdb: GNU에서 나온 디버거 프로그램
-디버거: 프로그램 내부에서 무슨 일이 일어나고 있는지 보여주는 것
-디버깅을 하기 위해서는 컴파일/링크 과정이 필요하다.
gdb 시작하기
:gdb를 실행하는 데는 4가지 방법이 있다.
-
gdb : gdb를 먼저 실행 후 file 명령어로 program을 나중에 부른다.
-
gdb (프로그램이름): 일반적인 gdb 방법
-
gdb (프로그램이름) (core): 코어 파일을 사용할 때 동시에 인자로 준다.
-
gdb (프로그램이름) (프로세스ID): 실행 중인 프로세스를 디버그 할 때 사용한다. gdb를 프로세스ID 에 접속시킨다.
core 파일
프로그램의 비정상적인 종료(segment fault 등)가 발생하는 경우, 커널에서 해당 프로세스와 관련된 메모리를 dump시킨 파일
(리눅스는 기본적으로 core dump를 하지 않도록 되어있음)
gdb 명령어 보기-> 2020/09/07 - [컴퓨터 시스템] - gdb 명령어 모음
gdb 사용하기
(2)번 방법을 이용해서 gdb를 사용했음.
gdb client와 gdb attackme 명령어를 각각 쳐서 gdb를 실행했다.
gdb 실행 후 disas main 명령어를 쳐서 main함수를 디스어셈블링한다.
(main함수의 기계어를 어셈블리어로 변환한다는 의미)
두 사진의 제일 왼쪽 값 (0x0000000000000a0a, 0x08048440)은 주소를 나타낸다.
<+0>과 <main+0>의 다음 값은 어셈블리어 명령어(push, mov 등)이다.
마지막은 레지스터 값이다.
이제 gdb를 이용해서 메모리 구조를 파악하는 연습을 할 것이다!
'컴퓨터 시스템' 카테고리의 다른 글
gdb 명령어 모음 (0) | 2020.09.07 |
---|---|
어셈블리어 명령어와 범용 레지스터 (0) | 2020.09.06 |
8086 Memory Architecture, register (0) | 2020.09.06 |
컴퓨터 시스템의 기초 (0) | 2020.09.05 |