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입니다.
이 튜토리얼을 따라 GDBFrontend를 사용하여 Dockerized C/C++ 앱을 디버깅하는 방법을 알아보세요.
GDBFrontend를 사용하여 임베디드 장치를 디버깅하려면 이 빠른 튜토리얼을 따르십시오.
GDBFrontend를 사용하여 네이티브 C Python 확장을 디버깅하려면 이 빠른 튜토리얼을 따르세요.
GDBFrontend에는 강력하고 확장 가능한 API가 있습니다. 이 빠른 튜토리얼을 따라 GDBFrontend 플러그인 개발에 대해 알아보세요.
특별한 개발/디버깅 요구 사항에 대한 통합 아이디어를 보려면 이 빠른 튜토리얼을 따르십시오.
OpenOCD 및 GDBFrontend를 사용하여 STM32를 디버깅하려면 이 튜토리얼을 따르세요.
GDBFrontend에는 동시에 여러 개를 사용할 수 있는 표현식 평가기가 있습니다.
조건을 설정하려면 중단점을 마우스 오른쪽 버튼으로 클릭하세요.
모든 변수, 멤버 및 항목의 표현식은 GDBFrontend의 VariablesExplorer에 연결됩니다.
프로세스 관리자를 사용하여 프로세스를 감시, 필터링 또는 관리할 수 있습니다.
GDBFrontend에는 "향상된 공동 작업"이라는 공동 작업을 위한 몇 가지 기능 세트가 있습니다.
향상된 협업을 활성화하면 협업 추첨을 사용할 수 있습니다. 그리기를 클릭하거나 Ctrl + Shift + X 단축키를 사용하여 그리거나 Ctrl + Shift + C를 사용하여 모든 그림을 지웁니다.
Enhanced Collaboration을 사용하면 모든 디버거 클라이언트가 소스 보기 시 동기화됩니다.
GDBFrontend는 확장성이 뛰어나고 강력한 API를 갖추고 있습니다. GDBFrontend의 확장성에 대한 몇 가지 예입니다.
./gdbfrontend
$ gdbfrontend --help
GDBFrontend is a easy, flexible and extensionable gui debugger.
Options:
--help, -h: Shows this help message.
--version, -v: Shows version.
--gdb-args= " ARGS " , -G " ARGS " : Specifies GDB command line arguments. (Optional)
--gdb-executable=PATH, -g PATH: Specifies GDB executable path (Default is " gdb " command on PATH environment variable.)
--tmux-executable=PATH, -tmux PATH: Specifies Tmux executable path (Default is " tmux " command on PATH environment variable.)
--terminal-id=NAME, -t NAME: Specifies tmux terminal identifier name (Default is " gdb-frontend " .)
--credentials=USER:PASS, -c USER:PASS: Specifies username and password for accessing to debugger.
--host=IP, -H IP: Specifies current host address that you can access via for HTTP and WS servers.
--listen=IP, -l IP: Specifies listen address for HTTP and WS servers.
--port=PORT, -p PORT: Specifies HTTP port. (0 for random port.)
--url-base=PATH, -u PATH: Specifies URL base path. (Default: /)
--readonly, -r: Makes code editor readonly. (Notice: This option is not related to security.)
--workdir, -w: Specifies working directory.
--plugin-dir, -P: Specifies plugins directory.
--dontopenuionstartup, -D: Avoids opening UI just after startup.
--verbose, -V: Enables verbose output.
--help
, -h
도움말 텍스트를 표시합니다.
--version
, -v
버전을 표시합니다.
--gdb-args="ARGS", -G "ARGS"
GDB 명령줄 인수를 지정합니다. (선택 과목)
--gdb-executable=PATH
, -g PATH
gdbfrontend --gdb-executable=/path/to/gdb
와 같이 GDB 실행 파일 경로를 지정할 수 있습니다. (선택 과목)
--tmux-executable=PATH
, -tmux PATH
gdbfrontend --tmux-executable=/path/to/tmux
와 같은 Tmux 실행 파일 경로를 지정할 수 있습니다. (선택 과목)
--terminal-id=PATH
, -t PATH
gdbfrontend --terminal-id=terminal-name
과 같이 Tmux 터미널 ID를 지정할 수 있습니다. (기본값: 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
자세한 출력을 활성화합니다.
GDBFrontend의 GDB 명령은 gf-
로 시작합니다.
gf-refresh
모든 브라우저 클라이언트를 새로 고칩니다.
gf-theme [theme-name]
원하는 테마로 전환하세요. 예: 기본 테마의 경우 gf-theme light
, gf-theme red
또는 gf-theme default
.
gf-list-plugins
플러그인 디렉토리에 있는 모든 GDBFrontend 플러그인을 나열합니다.
gf-load-plugin [plugin-name]
GDBFrontend 플러그인을 로드합니다.
gf-unload-plugin [plugin-name]
GDBFrontend 플러그인을 언로드합니다.
현재 단축키는 다음과 같습니다.
행동 | 단축키 | 문맥 |
---|---|---|
일반: 소스 파일 열기 | Ctrl + O | GDB프런트엔드 |
일반: 새로운 ExpressionEvaluator | Ctrl + R | GDB프런트엔드 |
일반: 기본 창의 새로운 ExpressionEvaluator | Ctrl + Shift + R | GDB프런트엔드 |
일반: 퍼지 소스 찾기 | Ctrl + P | GDB프런트엔드 |
런타임: 실행 | F5 | GDB프런트엔드 |
런타임: 계속 | F6 | GDB프런트엔드 |
런타임: 일시정지/중단 | F7 | GDB프런트엔드 |
런타임: 스텝 오버 | F8 | GDB프런트엔드 |
런타임: 한 단계 더 나아가기 | F9 | GDB프런트엔드 |
런타임: 단계 지침 | F10 | GDB프런트엔드 |
런타임: 중지 | F11 | GDB프런트엔드 |
향상된 공동작업: 그리기 모드 전환 | Ctrl + Shift + X | GDBFrontend / 향상된 공동 작업: 활성화됨 |
향상된 공동작업: 모든 도면 지우기 | Ctrl + Shift + C | GDBFrontend / 향상된 공동 작업: 활성화됨 |
GDBFrontend에는 테마가 내장되어 있습니다.
테마 간을 전환하려면 GDB 쉘에서 gf-theme [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 0 x ... > }
또는 모든 플러그인을 얻을 수 있습니다:
> >> 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를 사용하는 경우 스크롤 및 평가기 창 이동 성능이 포인터 시각화에 좋지 않은 영향을 미칠 수 있습니다. 이 상황에서는 해당 평가기 창에 대한 신호 및 슬롯 포인팅을 끌 수 있습니다.
실제로 gdb-frontend는 Windows에서 실행될 수 있지만 GDB의 Windows 버전에는 Windows에서 gdb-frontend를 사용하지 못하는 몇 가지 심각한 문제가 있습니다. 물론 Windows 10을 사용하는 경우 WSL에서 gdb-frontend를 사용할 수 있습니다.
WSL(Linux용 Windows 하위 시스템)에서 gdb-frontend를 사용할 수 있습니다.
/proc/net/tcp
인터페이스가 WSL에서 작동하지 않기 때문에 WSL에서 임의 포트 옵션을 사용할 수 없습니다. (WSL 2에는 이 문제가 없습니다.) v0.2.0-beta부터 GDBFrontend는 새로운 버전 관리 전략으로 전환했습니다.
vX.YZ-STABILITY
:
X
주요 버전이며, 주요 기능과 향상된 기능으로 장기적으로 변경됩니다.Y
새로운 기능과 향상된 기능을 포함하는 기본 버전입니다.Z
주요 버전의 버그 수정 릴리스입니다.STABILITY
릴리스의 안정성 수준입니다. ( alpha
, beta
, rcN
, stable
) 문서화는 아직 TODO입니다.
API 문서는 아직 할 일입니다.
플러그인 개발 튜토리얼을 읽을 수 있습니다.
테마는 플러그인으로 개발됩니다.
Discord 커뮤니티에 가입하세요.
프로젝트에 참여하거나 플러그인을 개발하여 기여할 수 있습니다. 모든 커밋을 환영합니다.
통화 | 주소 |
---|---|
BTC | bc1qhvlc762kwuzeawedl9a8z0duhs8449nwwc35e2 |
ETH / USDT / USDC | 0x1D99B2a2D85C34d478dD8519792e82B18f861974 |
XMR | 88qvS4sfUnLZ7nehFrz3PG1pWovvEgprcUhkmVLaiL8PVAFgfHjspjKPLhWLj3DUcm92rwNQENbJ1ZbvESdukWvh3epBUty |
USDT나 USDC를 기부하는 것이 바람직하지만, 위 통화 중 어느 것이나 기부할 수 있습니다. ?
저작권 (C) 2019, Oğuzhan Eroğlu [email protected] (https://oguzhaneroglu.com/)
GNU 일반 공중 라이선스 v3(GPL-3)
소스 파일의 변경 사항/날짜를 추적하는 한 소프트웨어를 복사, 배포 및 수정할 수 있습니다. (컴파일러를 통해) GPL 라이센스 코드를 포함한 모든 수정 사항이나 소프트웨어도 빌드 및 설치 지침과 함께 GPL에 따라 제공되어야 합니다.