gdb 2

메모리 vs 레지스터 (메모리가 있는데 레지스터 왜 또 쓸까?)

우선 메모리나 레지스터의 사용목적은 같다. 컴퓨터에 데이터를 저장하기위해 이건 머리에 박아놔야한다. 다만 좀 더 빠르고 효율적으로 데이터를 저장하고 사용하기위해 레지스터를 사용하는 것이고, 이에 대해 이론적으로 구체적으로 알고싶으면 컴퓨터구조 내지는 운영체제 과목의 메모리 계층(Memory Hierarchy) 개념을 공부하면 된다. 이 글은 포너블 내지는 프로그램 동적 디버깅을 할때 메모리랑 레지스터 헷갈리지 않기위해 적는 글이다. 우선 알아두면 좋을 전제들이 몇개있다. 1. 프로그램에서 데이터를 다루는 주체는 CPU이다. (따라서 프로그램 명령어. 그러니까 어셈블리어에 있는 데이터들은 다 CPU가 다루는거다.) 2. CPU가 데이터를 사용하기위해선 무조건 레지스터로 옮겨와야한다. (push / pop은..

공부/JUN STUDY 2022.03.30

GDB 기초 명령어 (리눅스 ELF 동적 분석) 내가 보려고 만든 GDB 단축키

gdb 실행gdb ./[프로그램이름]함수의 디스어셈블리 결과 출력disas [함수이름]disassemble [함수이름]프로그램 열기r [프로그램이름]프로그램 실행 (브레이크 포인트 / 중단점 까지)c브레이크 포인트 걸기b *[해당주소]브레이크 포인트 정보 출력info breakpoints해당 번호 브레이크 포인트 삭제delete [브레이크 포인트 번호, 지정안하면 다 삭제 됨]정보 출력 / 지정된 메모리 영역 출력 타입 및 갯수(바이트) 지정p $레지스터이름x/2wx $레지스터 이름 w->word(16진수)타입 2개 출력 x/s $레지스터 이름 s->string(문자열)타입 gdb ./분석하려는프로그램 : gdb시작disassemble 함수이름 : 함수 어셈블리어 확인b *주소 / b $레지스터 / b ..

728x90