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 [์ต์
]
๋๋ฒ๊ฑฐ๋ฅผ ์์ํ๋ค. ์ธ์๋ฅผ ์ง์ ํ ์ ์๋ค.
- file [์คํ ํ์ผ]
- ์ฝ๋ ์ด๋
- n or next
๋ค์ ์ค๋ก ์ด๋ํ๋ค. - s or step ๋ค์ ์ค๋ก ์ด๋ํ๋ค. ํจ์๊ฐ ์์ผ๋ฉด ํจ์ ๋ด๋ถ๋ก ๋ค์ด๊ฐ๋ค.
- c ๋ค์ ์ค๋ก ์ด๋ํ๋ค.
- n or next
- ๋ธ๋ ์ดํฌ ํฌ์ธํธ
- b or break [ํจ์]
์ง์ ํ ๊ณณ์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ์์ฑํ๋ค. - rb or rbreak [ํจ์ or ํด๋์ค or ๋ค์์คํ์ด์ค]
์ง์ ํ ๊ณณ์ ๋ชจ๋ ๊ณณ์ ๋ธ๋ ์ดํฌ ํฌ์ธํธ๋ฅผ ์์ฑํ๋ค.
- b or break [ํจ์]
- ๋ณ์
- p or print [๋ณ์]
๋ณ์๋ฅผ ๋ณด์ฌ์ค๋ค - display [๋ณ์]
๋ณ์๋ฅผ ํญ์ ๋ณด์ฌ์ค๋ค.
- p or print [๋ณ์]
- ์ข
๋ฃ
- kill
๋๋ฒ๊น ์ข ๋ฃ - quit
gdb ์ข ๋ฃ
- kill
ํฌ๋ก์ค ๋๋ฒ๊น
Windows์์ Linux ํ๋ก๊ทธ๋จ ๋๋ฒ๊น
gdb ํฌ๋ก์ค ์ปดํ์ผ
- ์์ค ๋ค์ด
https://ftp.gnu.org/gnu/gdb/ - msys2 ๋ค์ด ๋ฐ ์ค์น
https://www.msys2.org/ - ์ปดํ์ผ๋ฌ ์ค์น
- msys64.exe ์คํ
- pacman -S mingw-w64-x86_64-gcc
- 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