gdb - Gakgu/Gakgu.github.io GitHub Wiki

Gdb๋ž€?

gnu ๋””๋ฒ„๊ฑฐ์ด๋‹ค.

์„ค์น˜

$ pacman -S gdb

์„ค์ •

๋ฐฉ๋ฒ•1 - GDB Dashboard ์‚ฌ์šฉ

gdb-dashboard ์ฐธ๊ณ 

๋ฐฉ๋ฒ•2 - GDBGUI ์‚ฌ์šฉ

์›๊ฒฉ์œผ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

Client(Windows)

  • Mingw ์„ค์น˜
    • mingw32-gdb ์„ค์น˜
    • mingw32-libgcc ์„ค์น˜
  • GDBGUI ์„ค์น˜
    • (์„ค์น˜๋ฐฉ๋ฒ•1) pip์„ ์ด์šฉํ•˜์—ฌ ์„ค์น˜
    • (์„ค์น˜๋ฐฉ๋ฒ•2) ๋ฐ”์ด๋„ˆ๋ฆฌ ์„ค์น˜

์‹คํ–‰

Server(Linux)

gdb ์„œ๋ฒ„ 2000๋ฒˆ ํฌํŠธ๋กœ ์‹คํ–‰

gdbserver localhost:2000 [file]

๋ช…๋ น์–ด

  • ์‹คํ–‰
    • file [์‹คํ–‰ ํŒŒ์ผ]
      ๋””๋ฒ„๊น…์„ ํ•  ์‹คํ–‰ ํŒŒ์ผ์„ ์„ ํƒํ•œ๋‹ค.
    • run [์˜ต์…˜]
      ๋””๋ฒ„๊ฑฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฝ”๋“œ ์ด๋™
    • n or next
      ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•œ๋‹ค.
    • s or step ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•œ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
    • c ๋‹ค์Œ ์ค„๋กœ ์ด๋™ํ•œ๋‹ค.
  • ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ
    • b or break [ํ•จ์ˆ˜]
      ์ง€์ •ํ•œ ๊ณณ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • rb or rbreak [ํ•จ์ˆ˜ or ํด๋ž˜์Šค or ๋„ค์ž„์ŠคํŽ˜์ด์Šค]
      ์ง€์ •ํ•œ ๊ณณ์˜ ๋ชจ๋“  ๊ณณ์— ๋ธŒ๋ ˆ์ดํฌ ํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ๋ณ€์ˆ˜
    • p or print [๋ณ€์ˆ˜]
      ๋ณ€์ˆ˜๋ฅผ ๋ณด์—ฌ์ค€๋‹ค
    • display [๋ณ€์ˆ˜]
      ๋ณ€์ˆ˜๋ฅผ ํ•ญ์ƒ ๋ณด์—ฌ์ค€๋‹ค.
  • ์ข…๋ฃŒ
    • kill
      ๋””๋ฒ„๊น… ์ข…๋ฃŒ
    • quit
      gdb ์ข…๋ฃŒ

ํฌ๋กœ์Šค ๋””๋ฒ„๊น…

Windows์—์„œ Linux ํ”„๋กœ๊ทธ๋žจ ๋””๋ฒ„๊น…

gdb ํฌ๋กœ์Šค ์ปดํŒŒ์ผ

  1. ์†Œ์Šค ๋‹ค์šด
    https://ftp.gnu.org/gnu/gdb/
  2. msys2 ๋‹ค์šด ๋ฐ ์„ค์น˜
    https://www.msys2.org/
  3. ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜
  • msys64.exe ์‹คํ–‰
  • pacman -S mingw-w64-x86_64-gcc
  1. autotools ์‚ฌ์šฉ
$ cd [gdb source path]
$ mkdir -p ./build/mygdb/
$ cd ./build/mygdb
$ ../../configure --target=x86_64-arch-linux-gnu CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++
$ make && make install

์‚ฌ์šฉ๋ฒ•

gdb > dir temp
gdb > shell scp -r -p -P 2222 gakgu@localhost:[project path]/* ./temp
gdb > target remote localhost:2000