
☕ GDBFrontend는 쉽고, 유연하며 확장 가능한 GUI 디버거입니다.

GDBFrontend는 쉽고 유연하며 확장 가능한 GUI 디버거입니다.

pip을 사용하여 GDBFrontend를 설치할 수 있습니다.
sudo python3 -m pip install gdbfrontend
이미 설치되어 있고 업그레이드하는 경우:
sudo python3 -m pip install --upgrade gdbfrontend
또는 특정 GIT 스냅샷을 설치하려면:
sudo python3 setup.py install
그리고 실행할 수 있습니다:
gdbfrontend
최신 소스를 다운로드하여 실행할 수 있습니다.
다음 명령어로 gdb-frontend를 실행할 수 있습니다:
git clone https://github.com/rohanrhu/gdb-frontend.git gdb-frontend
cd gdb-frontend
./gdbfrontend
그리고 다음 주소로 열 수 있습니다:
http://127.0.0.1:5550/
GDB 셸은 다음 명령어로 열 수 있습니다:
tmux a -t gdb-frontend
Arch 기반 배포판용 Arch Linux 패키지를 설치할 수 있습니다. (AUR 패키지)
yay -S gdb-frontend-bin
그리고 실행할 수 있습니다:
gdbfrontend
Flatpak 패키지는 TODO 항목입니다.
이 튜토리얼을 따라 Docker화된 C/C++ 앱을 GDBFrontend로 디버깅하는 방법을 배우세요.
이 빠른 튜토리얼을 따라 GDBFrontend로 임베디드 장치를 디버깅하는 방법을 배우세요.
이 빠른 튜토리얼을 따라 GDBFrontend로 네이티브 C Python 확장을 디버깅하는 방법을 배우세요.
GDBFrontend는 강력하고 확장 가능한 API를 제공합니다. 이 빠른 튜토리얼을 따라 GDBFrontend 플러그인 개발을 배우세요.
이 빠른 튜토리얼을 따라 특수 개발/디버깅 요구 사항에 대한 통합 아이디어를 알아보세요.
이 튜토리얼을 따라 OpenOCD 및 GDBFrontend로 STM32를 디버깅하는 방법을 배우세요.
GDBFrontend에는 동시에 여러 개를 사용할 수 있는 표현식 평가기가 있습니다.



중단점을 우클릭하여 조건을 설정하세요.


모든 변수, 멤버 및 항목의 표현식은 GDBFrontend의 VariablesExplorer에서 연결됩니다.

프로세스 관리자로 프로세스를 보고, 필터링하거나 관리할 수 있습니다.


GDBFrontend에는 "향상된 협업"이라는 협업을 위한 여러 기능이 있습니다.

향상된 협업을 활성화하면 협업 드로잉이 가능합니다. 드로잉을 클릭하거나 Ctrl + Shift + X 단축키를 사용하여 드로잉하고, Ctrl + Shift + C를 사용하여 모든 드로잉을 지울 수 있습니다.

향상된 협업을 사용하면 모든 디버거 클라이언트가 소스 보기에서 동기화됩니다.

GDBFrontend는 매우 확장 가능하며 강력한 API를 제공합니다. GDBFrontend의 확장성 몇 가지 예시입니다.


./gdbfrontend$ gdbfrontend --help
GDBFrontend는 쉽고 유연하며 확장 가능한 GUI 디버거입니다.
옵션:
--help, -h: 도움말 메시지를 표시합니다.
--version, -v: 버전을 표시합니다.
--gdb-args="ARGS", -G "ARGS": GDB 명령줄 인수를 지정합니다. (선택 사항)
--gdb-executable=PATH, -g PATH: GDB 실행 파일 경로를 지정합니다. (기본값: PATH 환경 변수의 "gdb" 명령어)
--tmux-executable=PATH, -tmux PATH: Tmux 실행 파일 경로를 지정합니다. (기본값: PATH 환경 변수의 "tmux" 명령어)
--terminal-id=NAME, -t NAME: Tmux 터미널 식별자 이름을 지정합니다. (기본값: "gdb-frontend")
--credentials=USER:PASS, -c USER:PASS: 디버거 접근을 위한 사용자 이름과 비밀번호를 지정합니다.
--host=IP, -H IP: HTTP 및 WS 서버를 통해 접근할 수 있는 현재 호스트 주소를 지정합니다.
--listen=IP, -l IP: HTTP 및 WS 서버의 수신 주소를 지정합니다.
--port=PORT, -p PORT: HTTP 포트를 지정합니다. (0은 랜덤 포트)
--url-base=PATH, -u PATH: URL 기본 경로를 지정합니다. (기본값: /)
--readonly, -r: 코드 편집기를 읽기 전용으로 만듭니다. (참고: 이 옵션은 보안과 관련이 없습니다.)
--workdir, -w: 작업 디렉토리를 지정합니다.
--plugin-dir, -P: 플러그인 디렉토리를 지정합니다.
--dontopenuionstartup, -D: 시작 직후 UI를 열지 않습니다.
--verbose, -V: 상세 출력을 활성화합니다.
--help, -h도움말 텍스트를 표시합니다.
--version, -v버전을 표시합니다.
--gdb-args="ARGS", -G "ARGS"GDB 명령줄 인수를 지정합니다. (선택 사항)
--gdb-executable=PATH, -g PATHgdbfrontend --gdb-executable=/path/to/gdb와 같이 GDB 실행 파일 경로를 지정할 수 있습니다. (선택 사항)
--tmux-executable=PATH, -tmux PATHgdbfrontend --tmux-executable=/path/to/tmux와 같이 Tmux 실행 파일 경로를 지정할 수 있습니다. (선택 사항)
--terminal-id=PATH, -t PATHgdbfrontend --terminal-id=terminal-name와 같이 Tmux 터미널 ID를 지정할 수 있습니다. (기본값: gdb-frontend)
--credentials=USER:PASS, -c USER:PASS디버거 접근을 위한 사용자 이름과 비밀번호를 지정합니다.
--host=IP, -H IPHTTP 및 WS 서버를 통해 접근할 수 있는 현재 호스트 주소를 지정합니다.
--listen=IP, -l IPHTTP 및 WS 서버의 수신 주소를 지정합니다.
--port=PORT, -p PORTHTTP 포트를 지정합니다. (0은 랜덤 포트)
--url-base=PATH, -u PATHURL 기본 경로를 지정합니다. (기본값: /)
--readonly, -r코드 편집기를 읽기 전용으로 만듭니다. (참고: 이 옵션은 보안과 관련이 없습니다.)
--workdir, -w작업 디렉토리를 지정합니다.
--plugin-dir, -P플러그인 디렉토리를 지정합니다.
--dontopenuionstartup, -D시작 직후 UI를 열지 않습니다.
--verbose, -V상세 출력을 활성화합니다.
GDBFrontend의 GDB 명령어는 gf-로 시작합니다.
gf-refresh모든 브라우저 클라이언트를 새로고침합니다.
gf-theme [테마 이름]원하는 테마로 전환합니다. 예: gf-theme light, gf-theme red 또는 기본 테마의 경우 gf-theme default.
gf-list-plugins플러그인 디렉토리에 있는 모든 GDBFrontend 플러그인을 나열합니다.
gf-load-plugin [플러그인 이름]GDBFrontend 플러그인을 로드합니다.
gf-unload-plugin [플러그인 이름]GDBFrontend 플러그인을 언로드합니다.
현재 핫키는 아래에 나열되어 있습니다.
GDBFrontend에는 내장 테마가 있습니다.
테마 전환은 GDB 셸에서 gf-theme [테마] 명령어를 사용하세요.
(gdb) gf-theme doki
(gdb) gf-theme sky
(gdb) gf-theme sakura
(gdb) gf-theme waifu
(gdb) gf-theme cyberpunk
(gdb) gf-theme dark
(gdb) gf-theme green
(gdb) gf-theme light
(gdb) gf-theme red
기본 테마로 돌아가려면:
(gdb) gf-theme
또한 플러그인 개발 튜토리얼을 확인해 보세요.
gdbfrontend 모듈을 통해 GDBFrontend의 Python API에 접근할 수 있습니다.
(gdb) python-interactive
>>> dir(gdbfrontend)
예를 들어, 모든 클라이언트 소켓을 다음과 같이 가져올 수 있습니다:
>>> gdbfrontend.api.globalvars.httpServer.ws_clients
{1: <server.GDBFrontendSocket object at 0x...>}
또는 모든 플러그인을 가져올 수 있습니다:
>>> gdbfrontend.plugin.getAll()
['hello', 'theme_cyberpunk', 'theme_dark', 'theme_doki', 'theme_green', 'theme_light', 'theme_red', 'theme_sakura', 'theme_sky', 'theme_waifu']
디버거 세션에 HTTP 인증을 추가하려면 --credentials=USER:PASS 옵션을 사용하세요.
GDBFrontend는 주로 Chromium 기반 브라우저에서 테스트하며 개발되고 있습니다. Firefox를 비롯한 다른 브라우저에서도 정상 작동하지만, 다른 브라우저에서 문제가 발생하면 버그 신고를 보내주세요.
대부분의 GDBFrontend 함수는 스레드 안전하며 GDB의 메인 스레드에서 작동합니다. 따라서 GDB 셸에서 차단되는 작업을 실행하면 GDBFrontend 함수는 해당 작업이 완료될 때까지 기다려야 합니다.
스레드 안전한 GDBFrontend 함수가 작동해야 하는데 GDB의 메인 스레드를 차단하고 있을 때 이 경고가 표시됩니다.
(gdb) shell
$ ...

셸을 종료하면 차단된 GDBFrontend 함수가 계속 작동합니다.
참고: GDB 셸에서 아무 작업도 실행하지 않았는데 이 경고가 표시될 수 있습니다. 이는 GDB의 이벤트 루프에서 시간이 오래 걸리는 작업이 있음을 의미합니다. 이 경우 이 경고를 무시하세요.
GDBFrontend는 하위 프로세스, 애플리케이션 및 그 하위 프로세스에 SIGTERM을 보냅니다. 애플리케이션이 새 프로세스를 포크하고 PGID를 설정하는 경우 GDBFrontend가 이를 종료하지 못할 수 있습니다. 이 경우 프로세스에 SIGKILL을 보내야 합니다.
pkill -f gdb
매우 긴 깊이로 확장된 변수/멤버와 함께 ExpressionEvaluator를 사용하는 경우, 포인터 시각화에서 스크롤 및 평가기 창 이동 성능이 저하될 수 있습니다. 이 경우 해당 평가기 창의 signal 및 slot 포인팅을 끌 수 있습니다.

사실 gdb-frontend는 Windows에서 실행할 수 있지만, GDB Windows 버전에 심각한 문제가 있어 Windows에서 gdb-frontend를 사용하기 어렵습니다. 물론 Windows 10을 사용한다면 WSL에서 gdb-frontend를 사용할 수 있습니다.
WSL(Windows Subsystem for Linux)에서 gdb-frontend를 사용할 수 있습니다.
/proc/net/tcp 인터페이스가 작동하지 않아 랜덤 포트 옵션을 사용할 수 없습니다. (WSL 2에는 이 문제가 없습니다.)v0.2.0-beta부터 GDBFrontend는 새로운 버전 관리 전략으로 전환했습니다.
vX.Y.Z-STABILITY 형식에서:
X는 주요 버전으로, 장기적인 주요 기능 및 개선 사항을 나타냅니다.Y는 주 버전으로, 새로운 기능 및 개선 사항을 포함합니다.Z는 주 버전의 버그 수정 릴리스입니다.STABILITY는 릴리스의 안정성 수준입니다. (alpha, beta, rcN, stable)문서는 아직 TODO입니다.
API 문서는 아직 TODO입니다.
플러그인 개발 튜토리얼을 읽어보세요.
테마는 플러그인으로 개발됩니다.
Discord 커뮤니티에 참여하세요.
프로젝트에 커밋하거나 플러그인을 개발하여 기여할 수 있습니다. 모든 커밋은 환영합니다.
| 통화 | 주소 |
|---|---|
| BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
| ETH / USDT / USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
| XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
가급적 USDT 또는 USDC 후원을 권장하지만, 위 통화 중 어떤 것이든 후원 가능합니다. 🥳
Copyright (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
GNU General Public License v3 (GPL-3)
소프트웨어를 복사, 배포 및 수정할 수 있지만, 소스 파일의 변경 사항/날짜를 추적해야 합니다. GPL 라이선스 코드의 수정 사항이나 이를 포함하는 소프트웨어(컴파일러 포함)는 GPL과 함께 빌드 및 설치 지침과 함께 제공되어야 합니다.
| 동작 | 핫키 | 컨텍스트 |
|---|
| 일반: 소스 파일 열기 | Ctrl + O | GDBFrontend |
| 일반: 새 ExpressionEvaluator 열기 | Ctrl + R | GDBFrontend |
| 일반: 네이티브 창에 새 ExpressionEvaluator 열기 | Ctrl + Shift + R | GDBFrontend |
| 일반: 퍼지 소스 검색기 | Ctrl + P | GDBFrontend |
| 런타임: 실행 | F5 | GDBFrontend |
| 런타임: 계속 | F6 | GDBFrontend |
| 런타임: 일시 정지/인터럽트 | F7 | GDBFrontend |
| 런타임: Step Over | F8 | GDBFrontend |
| 런타임: Step Into | F9 | GDBFrontend |
| 런타임: Step Instruction | F10 | GDBFrontend |
| 런타임: 중지 | F11 | GDBFrontend |
| 향상된 협업: 드로잉 모드 전환 | Ctrl + Shift + X | GDBFrontend / 향상된 협업 활성화됨 |
| 향상된 협업: 모든 드로잉 지우기 | Ctrl + Shift + C | GDBFrontend / 향상된 협업 활성화됨 |