GDB 명령을 배우는 것은 내 버킷 목록에 있지만 그동안

Windbg 명령을 허용하고 유사한 기능이 있습니까? 예를 들어, 여러 개의 편집 가능한 메모리 창을 가져오고, 스테핑하는 동안 영역 주변에서 자동으로 분해하고, 분해 맛을 설정하고, 편집 가능한 값이있는 레지스터가있는 창을 갖는 기능이 있습니까?

Comments

답변

gdbgui 라는 자체 gdb 프런트 엔드를 시작했습니다. 모든 기능을 갖춘 프런트 엔드 브라우저 에 액세스 할 수있는 서버 (python).

gdbgui 스크린 샷

설치

pip install gdbgui --upgrade 

또는 gdbgui.com

모든 플랫폼 (Linux, macOS 및 Windows)과 JavaScript가있는 브라우저에서 작동합니다.

실행

단말기에

gdbgui 

를 입력하면 r 브라우저에서 새 탭이 열립니다.

기능

  • 중단 점 설정 / 제거
  • 선택적인 인라인 기계어 코드를 사용하여 소스 코드보기
  • 스택에서 현재 프레임 선택
  • 소스 코드 또는 기계어 코드 단계
  • 변수 생성 / 탐색
  • 스레드보기 / 선택
  • 메모리 탐색
  • 레지스터보기
  • 전체 gdb 터미널 기능을 통해 보낼 수 있습니다. 기존 gdb 명령 및 gdb / 열등한 프로그램 출력보기
  • 놀라운 Chrome 디버거에서 영감을 얻은 레이아웃
  • 역 디버깅을위한 Mozilla의 RR과 호환

댓글

  • 정말 좋은 작업입니다. 디자인은 평균 사용 사례의 핵심에 도달합니다. 나는 그것을 좋아한다. 또한 원격 디버깅을 지원합니다 (또는 target remote host:port gdb 명령 사용을 지원합니다. 잘하셨습니다. 메뉴에서 원격 호스트에 연결하는 기능을 추가하는 것이 좋습니다. -on. ‘ register` 크기를 줄일 수 있습니까? 모든 정보를 사용할 수 있지만 최소한 ARM에서는 가능합니다. ‘ 모든 레지스터를 한 번에 볼 수 없으므로 스크롤해야합니다.
  • 여기에있는 설명은 개별 gdbgui 지원을위한 것이 아닙니다. sx에 대한 질문 또는 gdbgui 지원 채널 / 버그 추적기를 사용하세요.

답변

일부 사람들은 그렇지 않습니다. ” 인터페이스에 신경을 쓰지 않으면 GDB에는 자체 내장 GUI (TUI라고 함)도 있습니다.

다음 명령을 사용하여 GUI 모드에서 GDB를 시작할 수 있습니다. gdb -tui

TUI 명령에 대한 빠른 참조는 여기에서 찾을 수 있습니다. http://beej.us/guide/bggdb/#qref

답변

저는 일반적으로 Emacs GUD를 GDB 프런트 엔드로 사용했습니다.

Emacs에서 GDB 지원

사용하기가 그리 어렵지 않고 시각적으로 중단 점을 설정할 수 있습니다. (또는 원하는 경우 GDB 창을 통해)

최상위 GDB 메뉴에서 액세스 할 수있는 여러 다른보기가 있습니다.

GUD보기

또한 값 위에 마우스를 올려 값을 검사 할 수 있도록하는 것과 같은 멋진 기능을 제공합니다.

마우스 오버 값

사용하려면 먼저 다음으로 이동해야합니다. 바이너리 폴더를 C-x C-fM-x gdb ( “Alt + X“로 지정) 을 입력 한 다음 “gdb“를 입력). 그런 다음 gdb 명령 줄을 입력하거나 [Enter]를 눌러 기본값을 적용 할 수 있습니다. 거기에서 디버깅하는 프로그램에 전달하려는 매개 변수와 함께 gdb 창에 “start”를 입력하면됩니다.

그 후에는 거의 황금색이지만보기는 하나뿐입니다. “GUD”아래의 화면 상단에있는 메뉴를 사용하면 디버깅하려는 모든 항목에 대한 다른 관련보기를 열 수 있습니다.(프레임은 별도의 창이고 “Windows”는 인프레 임 창입니다.)

일반적으로 중단 점은 프로그램 시작시 설정되며 그런 다음 상단에있는 버튼을 사용하여 코드를 탐색 할 수 있습니다. 또는 코드가없는 경우보고있는 바이너리를 분해하는 과정을 단계별로 진행할 수 있도록보기를 사용자 지정할 수 있습니다.

창 상단의 버튼은 “{}로 둘러싸여 있습니다. “는 코드 레벨 스테핑 용이고 아이콘에”<> “가있는 버튼은 명령 레벨 디버깅 용입니다. 따라서 정상적인 코드 디버깅을 수행하는 경우 왼쪽에 집중하고 실제 핵심에 들어가는 경우 오른쪽에 더 집중하고 싶을 것입니다.

또한 길을 잃은 경우, 이 아이콘 :

GUD 정보

질문에 답할 수있는 전체 책입니다. Emacs에 “emacs<vesrsion>-common-non-dfsg“를 설치해야하는 유일한 경우는 Debian (Ubuntu 괜찮음)에 있고 저장소에서 Emacs를 설치 한 경우입니다. ( “<version>“는 Emacs에서 M-x version에 의해 반환 된 10 진수가 아닌 숫자)

댓글

  • GNU Emacs가 아닌 Spacemacs입니다.
  • 아니요. 평범합니다. ‘ ol GNU Emacs, 나는 그냥 이렇게 보이도록 스타일을 지정했습니다. 위에서 언급 한 것은 내 구성에 특정한 것은 없습니다. (실제로 Spacemacs는 Emacs 구성의 집합 일 뿐이지 만 GDB 사용을 변경하더라도 실마리가 없습니다)
  • ‘는 Emacs가 아닙니다. 실행중인 OS와 패키지는 무엇입니까?
  • 다음에 Power Line 패키지를 설치 한 것 같습니다. 다른 것들. emacswiki.org/emacs/PowerLine
  • @mrbean 이것은 Linux Mint에서 그리고 예, 제 Emacs 테마라고 생각합니다. 2013 년에는 PowerLine과 함께 내일 base16이었습니다 (좋은 인식 btw!)

Answer

내 의견은 약간 편향되어 있지만 어셈블러 디버깅을 위해 최고의 GDB “프론트 엔드”는 IDA입니다 (원격 GDB 타겟과의 통신을 지원함). 하지만 소스 코드 디버깅의 경우 KDBG를 권장합니다.

댓글

  • 실제로 IDA 사용을 권장합니다. ‘ s linux_server 원격 GDB를 통해 ‘ 더 유능하고 빠릅니다 (텍스트 기반 프로토콜이 아닌 바이너리 프로토콜을 사용하기 때문에 ).
  • 추천을 정당화하십시오. 답변은 OP뿐 아니라 앞으로이 문제를 접하게 될 다른 모든 사람들을 위해 작성되었습니다.
  • 기본적으로 IDA의 모든 기능 (플러그인, IDAPython 스크립팅, 알려진 GUI,. ..) GDB의 프론트 엔드 일뿐만 아니라

답변

심각한 반대 투표의 위험에도 불구하고 , 저는 평범한 오래된 gdb 프롬프트를 곁에두고 GUI 프런트 엔드에 대해 권장하고 싶습니다. 디버깅의 기술 몇 년 전. GDB와 DDD는 물론 GDB의 프론트 엔드로서 Eclipse를 설명합니다.

당연히 저는 Vim을 IDE로 사용하고 있습니다. 터미널 및 tmux (이전 screen (byobu 포함)). 따라서 창 사이를 전환합니다. 내 터미널 멀티플렉서로 코드와 디버거 사이를 빠르게 전환 할 수 있습니다. GDB 프롬프트 (몇 주 동안 TUI를 시도한 후)에는 내가 원했던 모든 것을 처리했고 동일한 프로세스에 여러 번 연결할 수 있다는 점을 명심해야합니다 (그러므로 메모리를 설명하는 방식으로 살펴볼 수 있습니다).

모든 프런트 엔드가 뒤처지고있는 것 같습니다. 약간-놀랍지 않습니다-그리고 GDB 프롬프트와 그 장점과 기이함을 받아들이는 것이 더 합리적입니다. 베어 메탈 설정에서는 이것이 유일한 것일 수 있음을 명심하십시오. 따라서 자신의 표준에 따라 “괜찮은”GUI를 찾았더라도 배우는 것이 합리적입니다.

최신 버전의 GDB는 Python 스크립팅도 지원하며이를 통해 디버깅 할 매우 강력한 도구 세트를 제공합니다. 명령 줄에서도 가능합니다.

GUI 프런트 엔드 사용을 절대적으로 고집하는 경우 다양한 디버거를위한 단일 프런트 엔드를 제공하기 때문에 IDA Pro를 추천합니다. 단축키를 한 번만 배우거나 사용자 정의하십시오. 단점 : 특정 머신에 라이센스가 없거나 GDB 서버로 터널링 할 방법이 없을 때의 가격과 유연성 …


GDB의 프론트 엔드를 알지 못합니다. WinDbg 명령을 허용합니다. 그리고 다시 강조 할 수 있습니다. 어쨌든 바닐라 GDB를 배우는 데 투자 한 시간의 결실을 거두게 될 것입니다. 이러한 노력을 주저하지 마십시오. WinDbg에는 Windows 작동 방식, Windows 커널 작동 방식 등에 특정한 많은 것들이 있습니다. GDB는 훨씬 더 일반적입니다.

답변

DDD 를 제안하고 싶습니다. .

소스 코드가있는 경우 QTCreator 를 확인해야합니다. 그것의 디버거는 당신이 그것에 익숙하다면 Visual Studio와 유사합니다.

코멘트

  • I ‘ DDD를 사용했지만 ‘ 팬이 아닙니다. 저는 ‘ QtCreator를 확인하겠습니다. 감사합니다!
  • DDD는 데이터 구조를 표시하는 데 적합합니다. 보드에 배치 할 수 있습니다. ). 따라서 data-display-debugger.
  • DDD는 언뜻보기에 이상하고 오래된 것처럼 보이지만 ‘ 정말 강력합니다.

답변

GUI는 아니지만 익숙해지면 좋은 대체품입니다 (개인적으로는 대부분의 경우 더 빠르다고 생각합니다. )-> https://github.com/gdbinit/Gdbinit .

* nix 리버 싱을 시작했을 때를 기억하고 처음으로 gdb에 직면했습니다. 싫어하고 + mammon original “s gdbinit가 내 하루를 구했습니다. 요즘에는 대부분의 GUI 디버거보다 gdb를 선호합니다.

한 번 사용해보십시오. 🙂

전체 공개 : 저는이 도구의 작성자입니다.

댓글

  • Gdbinit이 ‘ 유지 관리중인 소프트웨어임을 공개해야합니다 …
  • 그래서? 누구나 ‘ 무료로 사용할 수 있습니다. 여기에서 아무것도 팔려고하지 않습니다. 이런 …!
  • @ fg- 그래도 경험에 기반을 두지 않고 해당 도구를 작성했다는 사실에만 근거한 광고 일 수 있습니다.
  • 그러면 ‘ 문제를 해결하고 다른 사람이 할 때까지 기다려야하는 유용한 도구를 광고하지 않습니까? ‘ 문제 해결사 ” 커뮤니티 “에게는 정말 이상한 사고 방식입니다.
  • @ fG- FAQ를 참조하십시오. reverseengineering.stackexchange.com/faq#promotion

답변

저는 DDD가별로 마음에 들지 않습니다. GUI에서 90 인치 정도입니다.

gdb의 KDE 프론트 엔드 인 KDBG를 추천하고 싶습니다. 게다가 gdb의 curses 확장 기능인 Cgdb를 살펴볼 수도 있습니다.

최근 Nemiver 를 발견했습니다. 정말 유망 해 보입니다.

댓글

  • KDBG는 소스 없이도 디스 어셈블 및 디버깅에 적합합니까? 스크린 샷에는 소스 코드 만 표시되었습니다.
  • 모르겠습니다. ‘ 전에 시도한 적이 없습니다 …
  • ” ‘ 90 개 ‘ 개 ‘ s GUI ” … 80 ‘와 비슷합니다
  • GUI의 모양이 유일한 단점입니까?

Answer

cgdb 도 Vim을 사용하는 경우 훌륭한 옵션입니다.

cgdb는 정규식 검색 및 기타 여러 명령과 같은 많은 명령을 vim과 공유합니다. cgdb 홈 페이지에서 :

키보드 인터페이스는 vim을 모델로하므로 vim 사용자는 cgdb를 사용하여 집에서 느낄 수 있습니다.

Answer

저는 일반적으로 코딩 등을 할 때 CLI 모드에서 Vim + gdb를 사용합니다.하지만 때로는 GUI가 바람직합니다.

언급 된 옵션 외에 Code :: Blocks가 있습니다. 백엔드로 GDB 및 CDB를 사용합니다. GDB의 경우 분해를 위해 AT & T, Intel 또는 custom 을 선택할 수 있습니다. 혼합 모드와 순수 명령어 목록을 지원합니다. 커서 아래에있는 변수 (코드에서)를 평가하도록 추가로 설정할 수 있습니다.

메모리 덤프 창이 하나만 있지만 원시 GDB 명령을 명령 줄 – 예 : 메모리 덤프.

CPU 레지스터를위한 별도의 창이 있으며 직접 편집 할 수는 없지만 언급 된 명령 줄 및 기타 값으로 값을 설정할 수 있습니다.

set $eax = 123 set var xyz = "q" 

아래 그림 은 KVM에서 소스 디버깅을 사용하여 작동하는 모습을 보여줍니다 (더 큰 형식으로 보려면 링크 열기).

우분투 12에서 실행할 때 GUI 버그 등이 발생했습니다. UB 12에는 버전 10.10이 있습니다. 그러나 현재 릴리스 , 12.11의 컴파일 및 설치는 수월했습니다.

예 : 사용자 지정 설치 경로 설치용 (배포판에 최신 버전이없고 둘 다 갖고 싶은 경우) :

- Download (SVN or release). - Unpack. - ./configure --exec-prefix=/blahblah/codeblocks --prefix=/blahblah/codeblocks - make - sudo make install 2>&1 | tee my_install.log 

코드 :: GDB를 사용하는 블록

답변

이 Dr Dobbs 기사 는 Linux OS에서 디버깅하기위한 GUI를 자세히 보여줍니다. Linux 환경을 기반으로 한 GDB 디버그라는 Qt-Creator를 추천합니다.어쨌든이 기사는 C ++ 코드 디버깅 만 검토하지만 GDB 디버깅 기능을 보여주기에는 충분합니다.

답변

권장합니다. UltraGDB 는 Eclipse 기술을 기반으로하는 GDB GUI 프런트 엔드 및 경량 IDE입니다.

Answer

Affnic Debugger GUI 가 있습니다. 무료는 아니지만 라이트 버전이 있습니다. Windows, Linux & MacOS에서 사용할 수 있습니다.

공식 웹 사이트에서

Affinic Debugger GUI .aka. ADG는 다양한 디버거를위한 그래픽 사용자 인터페이스로 설계되었습니다.이 빌드는 특히 GDB (GNU 디버거)를 대상으로합니다. 그래픽 창을 통해 ADG는 여러 디버거를보고 디버거의 모든 기능을 활용할 수 있습니다. 한보기 내에서 정보 유형을 확인하고 쉽게 클릭하여 디버거를 조작 할 수 있습니다. ADG는 또한 사용자가 디버거 명령을 직접 입력 할 수있는 통합 명령 터미널을 제공합니다. ADG는 Linux / Windows / Mac OS X에서 사용할 수 있습니다.

답변

VisualStudio.Code ( VS.Code )는 Linux에서 실행되며 gdb를 사용할 수있는 “Native Debug”확장 기능이 있습니다. 응답 성이 뛰어난 UI가 있습니다. 리소스가 매우 적습니다. 이 경험은 C ++ 개발자 용 Windows의 Visual Studio와 다소 비슷합니다 (어셈블리 뷰는 없음). 기본 디버그 바로 가기는 기본적으로 동일합니다 (F5, Shift-F5, F10, F11).

설치는 두 번 클릭으로 (하나는 VS.Code를 설치하고 다른 하나는 확장을 설치) Windows Visual Studio에서 바로 생산성을 찾고있는 사람에게 적합합니다.

답변

Voltron 은 LLDB, GDB, VDB를 지원하는 확장 가능한 Python 디버거 UI입니다. , WinDbg / CDB (PyKD를 통해)이며 macOS, Linux 및 Windows에서 실행됩니다. 처음 세 개에서는 x86, x86_64 및 arm을 지원하며 lldb에 대한 arm64 지원도 지원하고 gdb에 대한 powerpc 지원도 추가합니다.

저자는 또한 Voltron을 통합하기 위해 Binary Ninja 플러그인을 작성했습니다.- https://github.com/snare/binjatron -동기화 된보기를 허용합니다.

Answer

다음은 소스 코드 디버깅에만 적용됩니다.

CLion gdb를 사용하는 IDE입니다. 여전히 명령을 입력 할 수 있지만 단계별 실행, 현재 활성 변수보기 및 breakpoints 설정과 같은 많은 기능이 GUI에서 원활하게 구현됩니다. here 에 대해 자세히 알아보세요.

Answer

GDBFrontend 를 사용할 수 있습니다. 이것은 매우 해킹 가능한 GDB 프론트 엔드입니다.

전체 공개 : 저는 개발자입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다