โ gdb๋?
- GNU์์ ๊ฐ๋ฐํ command line debugging tool.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ๋ด๋ถ์์ ์ด๋ค ์ผ์ด ์คํ๋๋์ง ์ถ์ ๊ฐ๋ฅํ๋๋ก ๋ง์ ํจ์๋ฅผ ์ ๊ณตํ๋ค.
- c ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ๋ค, ํฐ๋ฏธ๋์ gdb ํ๋ก๊ทธ๋จ์ด๋ฆ ์ ์ ๋ ฅํ๋ฉด gdb๊ฐ ์คํ๋๋ค.
- ์ปดํ์ผ ํ๋ ๋ฐฉ๋ฒ : $ gcc -g -o [output] [input file]
โ gdb ๋ช ๋ น์ด
ํ๋ฒํธ b : ํด๋นํ์ breakpoint๋ฅผ ์ถ๊ฐํ๋ค.
r [ํ๋ผ๋ฏธํฐ] : run
ํ๋ฒํธ clear : ํด๋น ํ์ breakpoint๋ฅผ ์ ๊ฑฐํ๋ค
info b : breakpoint๋ค๊ณผ ๊ฐ๊ฐ์ state๋ฅผ ๋ณด์ฌ์ค๋ค
p : ํ์ฌ ์ง์ ์์ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ณ์๋ฅผ printํด์ค๋ค.
info locals : ํ์ฌ ์ง์ ์์ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ๋ก์ปฌ๋ณ์๋ฅผ ๋ณด์ฌ์ค๋ค.
n : next. next line์ผ๋ก ์ด๋. ํจ์ํธ์ถ์ด ์๋ ๊ฒฝ์ฐ ํจ์ ๋ด๋ถ๋ก ์ง์ ํ์ง ์๊ณ , ํจ์ ํธ์ถ์ ํ๋์ ๋ผ์ธ์ผ๋ก ์ธ์ํ์ฌ ํจ์๋ฅผ ํ ๋ฒ์ ์คํํ๋ค.
s : step. next line์ผ๋ก ์ด๋. ํจ์ ํธ์ถ์ด ์๋ ๊ฒฝ์ฐ ํจ์ ๋ด๋ถ๋ก ์ง์ ํ์ฌ ํ ์ค์ฉ ์คํํ๋ค.
c : continue. ํ๋ก๊ทธ๋จ์ ๊ณ์ ์คํํ๋ค. ๋ค์ breakpoint์์ ๋ฉ์ถ๋ค. (์์๊ฒฝ์ฐ ๋๊น์ง ์คํ)
finish : ํจ์๋ฅผ ๋๊น์ง ์คํ์ํค๊ณ stopํ๋ค.
return [value] : function running์ ๋ฉ์ถ๊ณ [value]๊ฐ์ ๋ฆฌํดํ๋ค.
list : running part์ ์์ค์ฝ๋๋ฅผ printํ๋ค.
list [number] : [number] line์ ์์ค์ฝ๋๋ฅผ printํ๋ค.
list [function] : [function]์ ์์ค์ฝ๋๋ฅผ printํ๋ค.
whatis [๋ณ์] : ๋ณ์์ ์๋ฃํ์ ์ถ๋ ฅํ๋ค
print [๋ณ์] : ๋ณ์์ value๋ฅผ ์ถ๋ ฅํ๋ค.
break(b) [number] : ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ค๊ฐ [number] line์์ ๋ฉ์ถ๋ค
break(b) [function] : ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ค๊ฐ [function]์์ ๋ฉ์ถ๋ค
delete [number] : [number] line์ breakpoint๋ฅผ ์ญ์ ํ๋ค
delete : ๋ชจ๋ breakpoint๋ฅผ ์ญ์ ํ๋ค
backtrace ๋๋ bt : ํ์ฌ ํจ์ ํธ์ถ ์คํ์ ์ถ๋ ฅํด์ค๋ค
frame [number] : ํ์ฌ ํจ์ ํธ์ถ ์คํ์์ [number]๋ฒ์งธ๋ฅผ selectํ๋ค
info frame : ํ์ฌ select๋ ํ๋ ์ ์ธ๋ถ ์ ๋ณด ์ถ๋ ฅ
โ ๊ฐ๋จํ ์ค์ต
- ์ด๊ฐ๋จ ์ค์ต์ ์งํํด ๋ณด์๋ฐ.
// gdb_test.c
#include <stdio.h>
void print(){
printf("Hello World!\n");
}
int main(void){
int test = 40;
int i;
for(i=0; i<10; i++) print();
return 0;
}

'๊ฐ์ธ ๊ณต๋ถ > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Process์ Thread (2) | 2024.10.15 |
---|---|
mmap() (0) | 2023.05.08 |
2์ง๋ฒ, 8์ง๋ฒ, 10์ง๋ฒ, 16์ง๋ฒ (1) | 2023.01.15 |