Study/Basic Study 3

Linux Study - Gdb, 함수 프롤로그/에필로그

1. GDB 실행방법 gdb -q [파일이름] or gdb [파일이름] gdb를 실행해 준다. list [파일이름] 소스코드를 10줄 단위로 보여 줄 수 있다. r 프로그램을 실행해 준다. k 프로그램 실행을 종료한다. bt 역추적, 오류가 발생한 함수를 역으로 찾아간다. b [함수], [주소] 함수, 주소에 브레이크포인트를 설정해 준다. main + [숫자] 와 같은 연산도 가능다. cl [함수], [주소] 함수의 시작부분이나 숫자의 행에 있는 브레이크 포인트를 지워준다. si 다음 행으로 진행, 함수가 있을 시 내부로 들어간다. ni 다음 행으로 진행, 함수가 있을 시 내부로 들어가지 않고 건너뛴다. disas [함수], [주소] 함수 또는 주소를 어셈블리 언어로 보여준다. x/[표현식] [주소], ..

Study/Basic Study 2021.06.27

Linux Study - Compile, 파일 권한, Assembly

1. Compile이란? 우리가 짠 소스코드를 컴퓨터가 이해 할 수 있는 기계어로 바꾸는 과정, gcc -o [만들어줄 파일이름] [컴파일할 파일 이름]으로 컴파일 해줄 수 있다. 프로그래밍 언어->어셈블리어->기계어의 순서를 거친다 1.1 전처리(Pre-processor) 컴파일을 시도할 경우 먼저 전처리기의 과정을 거친다 해당 헤더파일의 디렉토리를 찾아서 삽입해 준다 #define 이 있을 경우 이를 치환해 준다. gcc -E -o [만들어줄 파일이름.i] [컴파일할 파일이름] 으로 해 줄 수 있다. 1.2 컴파일러(Compiler) 우리가 작성한 소스코드를 읽어서 연산자,괄호,식별자와 같은 문법 요소별로 잘라서 이 문법 요소들을 해석해서 구문 트리를 생성해 주고, 이 트리로부터 어셈블리어 코드를 만..

Study/Basic Study 2021.06.21

Linux Study - 리눅스 쉘, 구조, 메모리 구조

1. 리눅스 쉘(SHELL) 리눅스는 커널(Kernel)과 쉘(Shell), 유틸리티(Utility), 응용 프로그램 (Application)으로 이루어져 있다. 쉘 은 컴퓨터의 메모리에 항상 떠있는 하나의 프로그램인 운영체제의 커널과 사용자 사이를 이어주는 역할을 한다. 사용자의 명령어를 해석해서 운영체제가 알아들을 수 있도록 해 준다. bash 쉘: 실행파일은 /bin/bash, 명령행 편집 기능을 제공한다. sh 쉘: 가장 오랫동안 모든 유닉스 시스템의 표준 구성 요소이며, 명령 프로그래밍 언어 기능을 가지고 있는 쉘이다. 2. 디렉토리 구조 /(루트): 최상위 디렉토리, 모든 디렉토리들이 루트 디렉토리에서부터 시작한다. /bin: 리눅스를 사용할 때 mv,rm,cp 등과 같은 명령어들이 저장 되어..

Study/Basic Study 2021.05.04