gdb - Gakgu/Gakgu.github.io GitHub Wiki
Gdb란?
gnu 디버거이다.
설치
$ pacman -S gdb
설정
방법1 - 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