Linux 용 C ++ gdb GUI가 있습니까? [닫은]


210

간단히 말하면, 최신 버전의 Visual C ++에서 제공하는 기능 세트에 가깝거나 유사한 gdb 용 GUI를 아는 사람이 있습니까?

세부 사항 : Windows에서 많은 시간을 보낸 사람으로서 Linux에서 C ++을 코딩해야 할 때마다 발견 한 더 큰 걸림돌 중 하나는 명령 줄 gdb를 사용하여 디버깅 할 때보 다 몇 배 더 오래 걸립니다. Visual Studio 및 연습으로 더 나아지지 않는 것 같습니다. 어떤 것은 그래픽으로 표현하기가 더 쉽고 빠릅니다.

특히, 나는 다음과 같은 GUI를 찾고 있습니다.

  • 스테핑 및 코드 스테핑, 변수 및 중단 점과 같은 모든 기본 사항을 처리합니다.
  • 복잡하고 중첩 된 C ++ 데이터 유형의 내용을 이해하고 표시 할 수 있습니다.
  • 매개 변수 유형과 같은 관련 정보를 표시하면서 템플릿 코드 및 데이터 구조를 지능적으로 단계별로 혼동하지 않고 바람직하게 지능적으로 처리 할 수 ​​있습니다.
  • 스레드 응용 프로그램을 처리하고 다른 스레드간에 전환하여 상태를 단계별로 보거나 볼 수 있습니다.
  • gdb에서 프로그램을 시작하는 것 외에도 이미 시작된 프로세스에 연결하거나 코어 덤프를 읽을 수 있습니다.

그러한 프로그램이 존재하지 않는다면 사람들이 최소한 몇 가지 요점을 충족시키는 프로그램에 대한 경험에 대해 듣고 싶습니다. 누구든지 권장 사항이 있습니까?

편집 :
가능성을 나열하는 것이 좋으며 얻을 수있는 것을 취할 것입니다.하지만 답변에 포함 할 수 있다면 훨씬 도움이 될 것입니다 :
(a) 실제로이 GUI를 사용했는지 여부 , 긍정적 / 부정적 피드백에 대한 의견입니다.
(b) 알고있는 경우 위에 언급 된 기능 중 지원되지 않는 기능

응용 프로그램에 대한 사람들의 개인적인 경험에 대한 아이디어를 얻을 수 있기 때문에 목록을 쉽게 얻을 수 있습니다.


21
"이러한 사이트는 사람들의 개인적인 경험에 대한 아이디어를 얻을 수 있기 때문에 좋습니다."+1 요즘 너무 많은 사람들이 IMHO가 요점을 완전히 놓친 목록 덤프를 수행합니다.
kizzx2



다음 gdb 프론트 엔드 목록을 참조하십시오 : sourceware.org/gdb/wiki/GDB%20Front%20Ends . 목록에서 첫 번째 목록을 제공하십시오. 매우 유망하고 현대적이며 브라우저 기반 이므로 gdbgui.com 이므로 크로스 플랫폼 입니다.
가브리엘 스테이 플스

답변:


55

Visual Studio 디버거의 강력한 기능과 경쟁 할 수있는 GDB를 오버레이하는 것은 없습니다 . 너무 강력하고 IDE에 너무 잘 통합되어 있습니다.

Linux 대안의 경우 무료 소프트웨어가 필요한 경우 DDD를 시도하십시오.


2
WinDBG는 Visual Studio가 제공하는 것보다 훨씬 우수합니다. Visual Studio 디버거는 WinDBG와 동일한 아키텍처 위에 있습니다. 그러나 GDB는 Windbg와 비교할 때 묻지 않아도됩니다. DDD보다 나은 그래픽 디버거가 좋습니다. Eclipse CDT는 좋은 대안입니다. 나는 KDE UI가 생각
bigmonachus

114
오 봐 전혀 백업하지 않고 클레임을 제기하는 답변. 또한 질문대답하지 않는 대답 이 받아 들여지는 것이 이상합니다 .
대안

3
실제 답변을 찾는 사람은 ddd가 쓰레기라는 것을 알고 있습니다. 내가 찾은 최고의 Linux 용 디버거 GUI는 무료 소프트웨어가 아닌 IDA입니다.
bkconrad

1
가능한 한 질문에 대답하거나 아무 말도하지 마십시오. 두 가지를 모두 사용하면 Visual Studio가 더 많이 채워져 있지만 DDD는 VS를 놓치지 않을 정도로 충분합니다. 슬프게도 DDD는 나이를 보이고 있습니다.
Alan De Smet

6
이 게시물은 업데이트 / 개선되어야합니다. Qt Creator는 Visual Studio와 비슷합니다.
vharron

85

Eclipse CDT는 Visual Studio를 사용하는 것과 비슷한 경험을 제공합니다. 매일 코드를 작성하고 로컬 및 원격 프로세스를 디버깅하기 위해 Eclipse CDT를 사용합니다.

Eclipse 기반 IDE 사용에 익숙하지 않은 경우 GUI에 약간 익숙해집니다. 그러나 일단 Eclipse (예 : 관점)에 고유 한 GUI 아이디어를 이해하면 도구를 사용하는 것이 좋은 경험이됩니다.

CDT 툴링은 코드 기반에서 메소드에 대한 참조를 빠르게 찾을 수있는 적절한 C / C ++ 색인기를 제공합니다. 또한 훌륭한 매크로 확장 도구와 제한된 리팩토링 지원을 제공합니다.

디버깅 지원과 관련하여 CDT는 코어 덤프를 읽는 것을 제외하고 목록의 모든 작업을 수행 할 수 있습니다 (지원할 수도 있지만이 기능을 사용하려고 한 적이 없습니다). 또한 템플릿을 사용한 코드 디버깅 경험이 제한되어 있으므로 CDT가 어떤 경험을 제공하는지 잘 모르겠습니다.

Eclipse CDT를 사용한 디버깅에 대한 자세한 정보는 다음 안내서를 확인하십시오.


10
코어 덤프 읽기가 지원됩니다. (Postmortem Debugger라고도 함)
Josh Kelley

Visual Studios보다 Eclipse CDT 디버깅 경험이 더 좋습니다. 그래도 MSVC에는 많은 기회가 없었습니다.
notlesh

3
QtCreator 는 Eclipse와 함께 언급해야 한다고 생각합니다 .
nonsensickle

78

GUI-ish를 원하지만 여전히 문자 기반을 원한다면 gdb -tui가 정상적으로 작동합니다.


45
gdb에서 '-'명령을 사용하여 TUI (텍스트 사용자 인터페이스) 모드로 이동할 수도 있습니다. 명령 프롬프트로 돌아가는 것은 Ctrl-X Ctrl-A입니다. TUI 모드에서 위, 아래, 왼쪽 및 오른쪽은 소스를 통해 이동합니다. Ctrl-P, Ctrl-N, Ctrl-F 및 Ctrl-B를 사용하여 명령 행 히스토리를 탐색하십시오.
벤 콤비

이것이 바로 내가 찾던 것입니다. 움직일 때 업데이트되는 유용한 뷰가있는 gdb 명령 줄의 기능.
Kevin Cox

7
steriods의 .gdbinit는 매우 인상적인 문자 기반 GUI를 제공합니다. github.com/cyrus-and/gdb-dashboard
cs01

나는 gdb-dashboard를 좋아 하지만 voltron 도 언급 해야 합니다.
nonsensickle

3
@ 배리 고마워. 궁금한 분은 여기 github.com/cs01/gdbgui 링크가 있습니다. X 포워딩이 필요하지 않은 원격 시스템을 쉽게 디버깅 할 수있는 클라이언트 / 서버 아키텍처 인 DDD와 유사한 데이터 구조 디스플레이와 복잡한 변수 등을 탐색 할 수있는 기능 등이 있습니다.
cs01

47

Nemiver C / C ++ 디버거를 확인하십시오 . Ubuntu (개발자 도구 / 디버깅)에 쉽게 설치할 수 있습니다.

업데이트 : 새로운 링크.


물론 멋진 또한 적절한 지원 : 'apt-get을 nemiver 설치'. 내 유일한 퀴즈는 'No package gconf-2.0 found'로 인해 저장소에서 빌드하지 못했습니다.
J Evans

인터페이스는 매우 명확하고 읽기 쉽지만 인터페이스 기능 v0.9.6을 사용하는 동안 때때로 충돌합니다. 또한 여전히 ddd가 할 수없는 디버깅 된 응용 프로그램 매개 변수를 허용합니다.
물병 자리 힘

Fedora 30에서도 사용 가능합니다 (적어도). 나는이 질문에 대해 우연히 발견했다.
user3236841

31

Qt Creator는 좋은 것 같습니다. 동료가 디버깅을 위해 설정하는 한 가지 방법을 보여주었습니다.

  • "Makefile 기반 프로젝트 가져 오기"새 프로젝트를 작성하십시오.
  • 루트 프로젝트 폴더를 지정하십시오 (그 아래의 소스를 색인화하고 매우 빠릅니다).
  • 프로젝트 설정으로 이동하여 실행 구성을 추가 한 다음 디버깅 할 실행 파일 및 해당 인수를 지정하십시오.
  • Qt Creator는 프로젝트를 디버깅하기 전에 프로젝트를 빌드해야한다고 주장합니다. 원하지 않거나 make를 사용하지 않으려면 프로젝트-> 빌드 (왼쪽 패널)로 이동 한 다음 "빌드 단계"의 오른쪽 패널에서 기본적으로 단계를 포함하여 모든 단계를 제거하십시오. 프로젝트를 만들었습니다.

이미 컴파일 한 앱을 디버깅하는 데 약간의 작업처럼 보일 수 있지만 그만한 가치가 있습니다. 디버거는 스레드, 스택 및 로컬 변수를 Visual Studio와 유사한 방식으로 표시하며 동일한 키보드 단축키를 많이 사용합니다. 적어도 std :: string 및 std :: map과 같은 템플릿을 잘 처리하는 것 같습니다. 아직 테스트하지는 않았지만 기존 프로세스 및 코어 덤프에 연결하는 것이 지원되는 것 같습니다.

지금은 한 시간도 채 걸리지 않았지만 지금까지는 감동했습니다.


29

Windows 개발이라는 아이디어를 싫어하지만 VC ++ 디버거는 내가 본 것 중 최고입니다. VC에 가까운 GUI 프론트 엔드를 찾지 못했습니다.

GDB는 일단 익숙해지면 훌륭합니다. 화를 내면 충분히 사용하면 능숙 해집니다. 더 이상 많은 노력을 기울이지 않고 나열된 모든 것을 수행하는 프로그램을 둘러 볼 수 있습니다. 내가 유능하기 전에 원격 서버에 대한 SSH 링크로 인해 약 한 달 정도 걸렸습니다. 나는 다시는 가지 않을 것이다.

DDD는 정말 강력하지만 버그가 많았습니다. GDB에서 메시지를 받았을 때 그 메시지가 들리지 않는 경우가 자주 발생했습니다. gdb 인터페이스 창이 있기 때문에 진행 상황을 확인하고 gdb와 직접 상호 작용할 수 있기 때문에 좋습니다. 어떤 이유로 든 DDD를 내 환경의 원격 X 세션에서 사용할 수 없습니다 (유닉스 개발을 할 때 씬 클라이언트에 앉아 있기 때문에 실제 문제).

KDevelop는 전형적인 KDE 스타일을 따르고 사용자에게 모든 것을 노출 시켰습니다. 또한 KDevelop에서 KDevelop 이외의 프로그램을 디버깅하는 데 운이 없었습니다.

Gnat Programming Studio (GPS)는 실제로 GDB에 대한 훌륭한 프론트 엔드입니다. Ada 프로젝트를 관리하는 것이 아니라 디버거가 필요한지 시험해 볼 가치가 있습니다.

이클립스를 사용할 수는 있지만 무게가 꽤 나가서 함께 일한 많은 유닉스 사람들이 인터페이스에 신경 쓰지 않습니다 .STFU뿐만 아니라 길을 벗어날 수도 있습니다. 이클립스는 또한 많은 공간을 차지하고 개처럼 달린 것처럼 보입니다.


2
내 프로젝트 gdbgui ( github.com/cs01/gdbgui ) 를 연결하고 싶었습니다 . 클라이언트 / 서버 아키텍처이므로 X 세션이 없어도 원격 시스템을 디버깅하는 데 효과적입니다. 또한 GDB와 직접 상호 작용할 수있는 터미널이 있으며 DDD와 유사한 데이터 구조를 표시하는 시각적 요소가 있습니다.
cs01

경험에 근거한 장단점 비교. 이 질문에 필요한 것입니다. ty
Heath Raftery

27

간단하고 유용한 cgdb를 사용합니다.


16

나는 DDD를 많이 사용하며, 사용법을 익히면 꽤 강력합니다. 내가 말하고자하는 한 가지는 불필요한 화면 업데이트가 많이 있기 때문에 WAN을 통해 X를 사용하지 않는 것입니다.

또한 GDB를 사용하지 않고 약간의 현금을 모으는 것을 신경 쓰지 않으면 TotalView를 사용해보십시오. 약간 가파른 학습 곡선이 있지만 (더 직관적 일 수는 있지만) 모든 플랫폼에서 사용했던 최고의 C ++ 디버거이며 사용자 정의 방식으로 객체를 조사하도록 확장 할 수 있습니다 (따라서 STL 목록은 실제 객체 목록으로, 혼란스러운 내부 데이터 멤버 등은 아닙니다.)


DDD가 원격 X를 통해 작동하도록 할 수는 없습니다. 씬 클라이언트에서 Xlib 오류와 충돌합니다. (
Adam Hawes

totalview는 실행 가능한 대안처럼 보입니다. DDD가 gdb curses 인터페이스보다 낫다고 생각하지 않습니다.
deft_code

8

Eclipse CDT 프로젝트를 확인하십시오. C / C ++ 개발을위한 Eclipse 용 플러그인이며 상당히 풍부한 기능의 디버깅 관점을 포함합니다 (장면에서 GDB를 사용함). 다양한 플랫폼에서 사용할 수 있습니다.




6

KDbg를 사용했습니다 (KDE에서만 작동합니다).


3
KDbg는 KDE로 제한 되지 않습니다 .
nobar

최고 . 이번에 어디 있었는지 궁금합니다.
edmz 2016 년

5

나는 gdb를 위해 몇 가지 다른 GUI를 시도했으며 DDD가 더 나은 것으로 나타났습니다. 그리고 리눅스를위한 비 gdb 제품에 대해서는 언급 할 수 없지만 다른 플랫폼에서 다른 많은 디버거를 사용했습니다.

gdb는 위시리스트에있는 대부분의 작업을 수행합니다. DDD는 그들에게 더 좋은 정면을 제시합니다. 예를 들어 스레드 전환이 더 간단 해집니다. 중단 점 설정은 예상대로 간단합니다.

당신이하고 싶지 않은 무언가가있는 경우에 대비하여 cli window를 얻습니다.

내가 사용한 다른 디버거보다 뛰어난 DDD의 기능 중 하나는 데이터 "그래프"입니다. 이를 통해 구조, 객체 및 메모리를 드래그 가능한 상자로 표시하고 정렬 할 수 있습니다. 포인터를 두 번 클릭하면 부모에 대한 시각적 링크가 포함 된 역 참조 된 데이터가 열립니다.


ddd는 인수가있는 프로그램에서 작동합니까? 나는 인수를 전달할 수 없었습니다 ...
user3236841

올바르게 기억한다면 DDD는 GDB에 직접 콘솔 창을 제공 할 수 있습니다. GDB 콘솔에서 "set args xyz abc"명령을 사용하여 명령 행 인수를 설정할 수 있습니다.
Andrew Edgecombe

5

Qt Creator-on-Linux는 요즘 C ++ 용 Visual Studio-on-Windows와 동등합니다. 나는 심지어 디버거 쪽에서 더 잘 말할 것입니다.


5

이 목록에 누락되어 있고 매우 효율적인 IDE가 있습니다 (문제없이 많은 C / C ++ 프로젝트에서 사용했습니다) : Netbeans .


나는 익숙해 졌기 때문에 cgdb를 선호하지만 Netbeans는 VS의 훌륭한 디딤돌이었습니다.
zzxyz

3

단계별로 수행 할 수있는 것은 g ++에서 생성하는 디버깅 정보에 의해 크게 제한됩니다. Emacs는 도구 모음 / 메뉴를 통해 제어하고 별도의 창에 데이터를 표시하고 gdb 명령을 직접 입력 할 수있는 gdb 인터페이스를 제공합니다. Eclipse의 CDT는 유사한 도구를 제공합니다. Anjuta와 Code :: Blocks에 대해 들었지만 결코 사용하지 않았습니다.


3

Visual Studio에 익숙한 사람으로서,이를 대체하기 위해 몇 가지 오픈 소스 IDE를 살펴 봤으며 KDevelop는 Visual C ++ 사용자가 앉아서 사용할 수있는 가장 가까운 IMO를 제공합니다. 디버깅 모드에서 프로젝트를 실행할 때 gdb를 사용하지만 kdevelop는 gdb를 알 필요가 없도록 모든 것을 처리합니다. 변수를 한 단계 씩 밟거나 시계를 지정하기 만하면됩니다.

불행히도 여전히 Visual Studio Debugger만큼 좋지 않습니다.


3

Windows를 사용하는지 아니면 UNIX를 사용하는지에 대해서는 언급하지 않습니다.

UNIX 시스템에서 KDevelop 는 훌륭하지만 사용 하기 쉽고 KDevelop에서 개발되지 않은 앱과도 작동하기 때문에 KDbg 를 사용합니다.

Eclipse 는 두 플랫폼 모두에서 우수합니다.

Windows에는 Wascana Desktop Developer 라는 훌륭한 패키지 가 있습니다. Eclipse CDT 및 MinGW는 모두 최소한의 고통으로 패키지되고 사전 구성되어 있습니다. Windows에서 GNU 코드를 개발할 때 찾은 것이 가장 좋습니다.

이 디버거를 모두 사용했지만 MS Dev Studio만큼 좋은 것은 없습니다. Eclipse / Wascana는 아마도 가장 가까운 것이지만 DLL에 들어 가지 못하고 변수를 검사하는 데 좋지 않은 한계가 있습니다.


3

DS-5 디버거를 살펴본 적이 있습니까?

유용한 기능이 많이 포함 된 유료 버전이 있지만 Community Edition을 무료로 사용할 수도 있습니다 (특히 임베디드 시스템에 매우 유용함).

이클립스를 사용하여 실제 장치에서 Android 애플리케이션을 디버깅 할 때이 도구에 대한 긍정적 인 경험이 있습니다.





1

cygwin gdb로 gdb -w를 사용해 보셨습니까? 상당히 잘 작동하는 Windows 인터페이스가 있다고 가정합니다.

내가 찾은 유일한 문제는 현재 컴퓨터에서 ddd를 설치 한 후에야 실행되지 않았다는 것입니다. ddd를 설치할 때 설치된 tcltk가 필요하다고 생각합니다.




0

지난 15 개월 동안 통찰력을 사용합니다 (FC6과 함께 제공). 훌륭하지는 않지만 Tcl / Tk로 작성되었지만 간단하고 유용합니다. DDD는 품질 / 유틸리티는 비슷하지만 사용하기가 다소 어렵습니다 (다양한 GUI 문제 및 누락). 또한 gdb를 IDE 인 SlickEdit과 통합하려고했습니다. 그것은 잘 작동했습니다 (약 4 시간 동안 연주했습니다).하지만 GUI 컨텍스트 스위치는 마음에 들지 않았습니다. 디버깅하는 동안 IDE가 변경되지 않는 것을 좋아합니다. Windows에서는 IDE에 SlickEdit을 사용하고 디버깅에는 Visual Studio Debugger를 사용합니다. 따라서 3 : Insight, DDD 및 SlickEdit에서 Insight가 가장 우선적으로 선택됩니다.> 95 % 이상의 시간을 사용하며 명령 줄 gdb 및 DDD는 다른 5 %를 구성합니다. 기회가 생기면 어느 시점에서 Eclipse를 평가할 것입니다. 제 작업 PC에 Eclipse를 합리적으로 실행하기에 충분한 RAM (1GB 만)이없는 것 같습니다.

또한 면접 중 첫 손을 포함하여 TotalView에 대한 많은 찬사를 들었습니다. 나는 2008 년 말에 회사의 평가를 받았지만 결국 gdb가 우리의 요구에 충분하기 때문에 진행하지 못했습니다. 그리고 그것은 무료이며 어디에나 있습니다.


0

www.zero-bugs.com/ Zero 디버거를 사용하십시오. gcc의 C ++ 0x 지원이 필요합니다


1
www.zero-bugs.com/ 웹 사이트 다운
vharron

0

실행중인 프로그램을 단계별로 실행하기 위해 디버거를 찾고있었습니다. 말하기 : 첨부. 이 프로그램은 일식으로 빌드되었지만 소스 파일이없는 멀티 스레딩 장애물로 인해 소스 파일이 없습니다. 뭐야

NetBeans에 매우 익숙해졌습니다.

  • 메뉴에서 [debug]-> Deugger 연결 ...
  • 프로세스가 디버깅 할 것을 선택함에 따라
  • 프로젝트 [새 프로젝트]

이제 창이 사라지고 아무것도 보이지 않습니다. 프로세스에서 분리하십시오. 읽기 광장 "중지"가 도움이됩니다.

  • 폴더에서 프로젝트로 소스를 가져옵니다. "... / MyProject / src
  • 이제 프로젝트에 나타나고 중단 점을 설정할 수 있습니다.
  • 다시 디버거를 연결
  • 디버깅 할 프로세스를 선택했습니다.
  • 프로그램이 다음 중단 점에 도달하면 디버거가 중지되어야합니다.

[창]-> [디버깅]->로 이동하면 창이 불편합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.