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