๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ ๊ณต๋ถ€/CS

gdb ๋ช…๋ น์–ด

by syLim___ 2023. 6. 12.
728x90

โœ… 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;
}

728x90

'๊ฐœ์ธ ๊ณต๋ถ€ > CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Process์™€ Thread  (2) 2024.10.15
mmap()  (0) 2023.05.08
2์ง„๋ฒ•, 8์ง„๋ฒ•, 10์ง„๋ฒ•, 16์ง„๋ฒ•  (1) 2023.01.15