반응형

이번에는 gdb를 통해서 각종 정보를 확인 하는 방법을 알아보자 


(gdb) info register


(gdb) run

Starting program: /home/choi/bash


Breakpoint 1, 0x0000555555583db0 in main ()

(gdb) info registers

rax            0x555555583db0   93824992427440

rbx            0x0      0

rcx            0x555555623420   93824993080352

rdx            0x7fffffffe4d8   140737488348376

rsi            0x7fffffffe4c8   140737488348360

rdi            0x1      1

rbp            0x555555623420   0x555555623420 <__libc_csu_init>

rsp            0x7fffffffe3e8   0x7fffffffe3e8

r8             0x7ffff79a2d80   140737347464576

r9             0x7ffff79a2d80   140737347464576

r10            0x2      2

r11            0x3      3

r12            0x555555585520   93824992433440

r13            0x7fffffffe4c0   140737488348352

r14            0x0      0

r15            0x0      0

rip            0x555555583db0   0x555555583db0 <main>

eflags         0x246    [ PF ZF IF ]

cs             0x33     51

ss             0x2b     43

ds             0x0      0

es             0x0      0

fs             0x0      0

gs             0x0      0

(gdb) 


현재 함수를 호출한 함수와 호출시 전달된 인자에 대한 정보를 담고 있는 스택 트레이스도 출력할수 있다. 스택 트레이스를 확인하면 함수 호출 내역을 끝까지 역추적할 수 있다. 


(gdb) info stack

(gdb) info stack

#0  0x0000555555583db0 in main () 


(gdb) x/5x $rip

gdb에서 가장 쓰임이 많은 명령어 x를 사용했다. x는 메모리값을 출력하는 명령으로 메모리, 지역 변수, 기타 실행 파일의 저장된 다양한 정보를 보여줍니다.

/5x라는 인자를 사용했는데 그 의미는 5개의 주소 값을 0x로 표현되는 16진수로 출력하는 명령어 입니다.

(gdb) x/5x $rip

0x555555583db0 <main>:  0x56415741      0x54415541      0x81485355      0x000128ec

0x555555583dc0 <main+16>:       0x247c8900

(gdb) x/5x $rsp

0x7fffffffe3e8: 0xf75d7b97      0x00007fff      0x00000001      0x00000000

0x7fffffffe3f8: 0xffffe4c8 



반응형

+ Recent posts