Existe uma GUI C ++ gdb para Linux? [fechadas]

210

Resumidamente: alguém sabe de uma GUI para o gdb que a aproxima ou aproxima do conjunto de recursos que você obtém na versão mais recente do Visual C ++?

Em detalhes: como alguém que passou muito tempo programando no Windows, um dos maiores obstáculos que encontrei sempre que preciso codificar C ++ no Linux é que a depuração de qualquer coisa usando a linha de comando gdb me leva várias vezes mais tempo do que em Visual Studio, e não parece estar melhorando com a prática. Algumas coisas são mais fáceis ou rápidas de expressar graficamente.

Especificamente, estou procurando uma GUI que:

  • Lida com todos os conceitos básicos, como passar por cima e entrar no código, observar variáveis ​​e pontos de interrupção
  • Compreende e pode exibir o conteúdo de tipos de dados C ++ complexos e aninhados
  • Não se confunde e, de preferência, pode percorrer inteligentemente estruturas de código e dados modeladas enquanto exibe informações relevantes, como os tipos de parâmetro
  • Pode lidar com aplicativos encadeados e alternar entre diferentes segmentos para percorrer ou exibir o estado de
  • Pode lidar com a conexão com um processo já iniciado ou com a leitura de um dump principal, além de iniciar o programa em gdb

Se esse programa não existir, gostaria de ouvir sobre as experiências que as pessoas tiveram com programas que atendem a pelo menos alguns dos pontos principais. Alguém tem alguma recomendação?

Edit:
Listar as possibilidades é ótimo, e eu aceitarei o que posso obter, mas seria ainda mais útil se você incluísse em suas respostas:
(a) Se você realmente usou ou não essa GUI e se sim , que feedback positivo / negativo você tem sobre isso.
(b) Se você souber, quais dos recursos mencionados acima são / não são suportados

É fácil encontrar listas, sites como esse são ótimos porque você pode ter uma idéia da experiência pessoal das pessoas com os aplicativos.

HappyDude
fonte
21
+1 em "Sites como esse são ótimos, porque você pode ter uma idéia da experiência pessoal das pessoas". Hoje em dia, muitas pessoas apenas fazem um despejo de lista que IMHO ignora completamente.
kizzx2
1
Em engenharia reversa: reverseengineering.stackexchange.com/questions/1392/…
Ciro Santilli escreveu:
Veja também perguntas semelhantes: O que é uma boa alternativa unix ao DDD (Data Display Debugger)?
olibre
Veja esta lista de front-ends do gdb aqui: sourceware.org/gdb/wiki/GDB%20Front%20Ends e dê uma chance ao primeiro da lista. Parece muito promissor e moderno e é multiplataforma, pois é baseado em navegador: gdbgui.com .
Gabriel Staples

Respostas:

55

Você não encontrará nada sobreposto ao GDB que possa competir com o poder bruto do depurador do Visual Studio. É poderoso demais e muito bem integrado ao IDE.

Para uma alternativa ao Linux, tente o DDD se você gosta de software livre.

Vicent Marti
fonte
2
O WinDBG é muito superior ao que o Visual Studio fornece. O depurador do visual studio fica na parte superior da mesma arquitetura do WinDBG. Com isso dito, o GDB não tem nada a perguntar ao compará-lo ao Windbg. Um depurador gráfico que seja melhor que o DDD seria ótimo. O Eclipse CDT é uma boa alternativa. Eu acho que havia uma interface do KDE
bigmonachus
114
Veja. Uma resposta que faz uma reivindicação sem fazer o backup. Também acho estranho que a resposta que não responde à pergunta tenha sido aceita.
alternativa
3
para quem vem aqui em busca de uma resposta real, saiba que ddd é lixo. A melhor GUI do depurador para Linux que encontrei é a IDA, que não é um software livre.
Bkconrad
1
Responda à pergunta da melhor maneira possível ou não diga nada. Tendo usado os dois, o Visual Studio é mais cheio de recursos, mas o DDD é bom o suficiente para eu não sentir falta do VS. Infelizmente, o DDD está mostrando sua idade.
Alan De Smet
6
Esta postagem precisa ser atualizada / aprimorada. O Qt Creator é incrível, a par do Visual Studio.
vharron
85

O Eclipse CDT fornecerá uma experiência comparável ao uso do Visual Studio. Uso o Eclipse CDT diariamente para escrever código e depurar processos locais e remotos.

Se você não estiver familiarizado com o uso de um IDE baseado em Eclipse, a GUI demorará um pouco para se acostumar. No entanto, depois de entender as idéias da GUI exclusivas do Eclipse (por exemplo, uma perspectiva), o uso da ferramenta se torna uma experiência agradável.

As ferramentas CDT fornecem um indexador C / C ++ decente que permite encontrar rapidamente referências a métodos em sua base de código. Ele também fornece uma boa ferramenta de expansão de macro e suporte limitado à refatoração.

Com relação ao suporte à depuração, o CDT é capaz de fazer tudo na sua lista, com exceção da leitura de um dump principal (ele pode suportar isso, mas eu nunca tentei usar esse recurso). Além disso, minha experiência com o código de depuração usando modelos é limitada, portanto, não tenho certeza de que tipo de experiência o CDT fornecerá a esse respeito.

Para obter mais informações sobre depuração usando o Eclipse CDT, convém verificar estes guias:

Jon Ball
fonte
10
A leitura de core dumps é suportada. (É referido como o depurador de post-mortem.)
Josh Kelley
Eu tive uma experiência melhor na depuração do Eclipse CDT do que no Visual Studios. Eu não dei muita chance à MSVC, no entanto.
Notlesh #
3
Eu acho que o QtCreator deve ser mencionado ao lado do Eclipse, pois é comparável.
Nonsensickle
78

O gdb -tui funciona bem se você deseja algo com interface gráfica, mas ainda com base em caracteres.


fonte
45
Você também pode entrar no modo TUI (interface de usuário de texto) enquanto estiver no gdb usando o comando '-'. Retornando ao prompt de comando, pressione Ctrl-X Ctrl-A. Enquanto estiver no modo TUI, as teclas para cima, para baixo, para a esquerda e para a direita se movem pela fonte. Use Ctrl-P, Ctrl-N, Ctrl-F e Ctrl-B para navegar no histórico da linha de comando.
Ben Combee 25/10/08
Era exatamente isso que eu estava procurando. O poder da linha de comando gdb com algumas visualizações úteis que são atualizadas conforme eu me movo.
Kevin Cox
7
A .gdbinit em steriods lhe dá um caráter realmente impressionante baseada em GUI, com cor: github.com/cyrus-and/gdb-dashboard
CS01
Eu gosto bastante do painel gdb, mas também tenho que mencionar o voltron .
Nonsensickle
3
@ Barry obrigado. Para qualquer pessoa curiosa, aqui está um link: github.com/cs01/gdbgui . Possui display estrutura de dados semelhante ao DDD, uma arquitetura cliente / servidor para facilmente depurar máquinas remotas sem X encaminhamento necessário e capacidade para explorar variáveis complexas, etc ..
CS01
47

Confira o Nemiver C / C ++ Debugger . É fácil de instalar no Ubuntu (Developer Tools / Debugging).

Atualização: Novo link.

Sergey Shandar
fonte
Absolutamente fabuloso , também suportado pelo apt: 'apt-get install nemiver'. Meu único problema é que a construção do repositório falhou devido a um 'Nenhum pacote gconf-2.0 encontrado'.
J Evans
a interface é clara e boa de ler, mas às vezes falha ao usar os recursos da interface v0.9.6. Ele também aceita parâmetros de aplicativos depurados, o que eu ainda não posso deixar o ddd fazer.
11505 Aquarius Power
Também disponível no Fedora 30 (pelo menos). Eu acabei de encontrar essa pergunta e nemiver.
user3236841
31

O Qt Creator parece uma coisa boa. Um colega me mostrou uma maneira de configurá-lo para depuração:

  • Crie um novo projeto, "Importação de projeto baseado em Makefile".
  • Aponte-o para a pasta do projeto raiz (ele indexará as fontes abaixo e é impressionantemente rápido).
  • Vá para as configurações do projeto e adicione uma configuração de execução, depois especifique o executável que você deseja depurar e seus argumentos.
  • O Qt Creator parece insistir em criar seu projeto antes de depurá-lo. Se você não quer isso, ou não usa make, basta ir a projetos -> compilar (painel esquerdo) e, no painel direito em "Etapas de compilação", remova todas as etapas, incluindo a etapa por padrão quando você criou o projeto.

Pode parecer um pouco trabalhoso para depurar um aplicativo que eu já compilei, mas vale a pena. O depurador mostra threads, pilhas e variáveis ​​locais de maneira semelhante ao Visual Studio e até usa muitos dos mesmos atalhos de teclado. Parece lidar bem com modelos, pelo menos std :: string e std :: map. Anexar processos existentes e core dumps parece ser suportado, embora ainda não o tenha testado.

Lembre-se de que eu o usei por menos de uma hora agora, mas estou impressionado até agora.

Soulman
fonte
29

Detesto a ideia de desenvolvimento do Windows, mas o depurador VC ++ está entre os melhores que já vi. Não encontrei um front end da GUI que se aproxima do VC.

O GDB é incrível quando você realmente se acostuma. Use-o com raiva o suficiente e você se tornará muito eficiente. Eu posso me virar em um programa fazendo todas as coisas que você listou sem muito esforço. Demorou mais ou menos um mês para sofrer um vínculo SSH com um servidor remoto antes que eu fosse proficiente. Eu nunca voltaria embora.

O DDD é realmente poderoso, mas foi bastante complicado. Eu descobri que ele congelava com bastante frequência quando recebia mensagens do GDB de que ele não estava grudado. É bom porque tem uma janela de interface gdb para que você possa ver o que está acontecendo e também interagir diretamente com o gdb. O DDD não pode ser usado em uma sessão X remota no meu ambiente (um problema real, já que estou sentado em um thin client quando eu faço o desenvolvimento do Unix) por algum motivo, por isso, é algo que me interessa.

O KDevelop seguiu o estilo típico do KDE e expôs TUDO ao usuário. Eu também nunca tive sorte em depurar programas que não são do KDevelop no KDevelop.

O Gnat Programming Studio (GPS) é realmente um bom front-end para o GDB. Ele não gerencia apenas projetos Ada, portanto vale a pena tentar se você precisar de um depurador.

Você pode usar o Eclipse, mas é bastante pesado e muitas pessoas experientes do Unix com quem trabalhei (inclusive eu) não se importam muito com a interface, o que não é apenas o STFU e fica fora do seu caminho. O Eclipse também parece ocupar muito espaço e correr como um cachorro.

Adam Hawes
fonte
2
Só queria conectar meu projeto, gdbgui ( github.com/cs01/gdbgui ). É uma arquitetura cliente / servidor, portanto, funciona bem na depuração de máquinas remotas sem a necessidade de uma sessão X. Ele também possui um terminal para interagir diretamente com o GDB e recursos visuais para exibir estruturas de dados, semelhantes ao DDD.
CS01
Comparações com prós e contras com base na experiência. Apenas o que esta pergunta precisa. ty
Heath Raftery
27

Eu uso cgdb, simples e útil

bacalhau
fonte
16

Eu uso muito o DDD e é muito poderoso quando você aprende a usá-lo. Uma coisa que eu diria é que não o use sobre o X na WAN, porque parece fazer muitas atualizações de tela desnecessárias.

Além disso, se você não é compatível com o GDB e não se importa de gastar um pouco de dinheiro, eu tentaria o TotalView. Ele tem um pouco de uma curva de aprendizado íngreme (definitivamente poderia ser mais intuitivo), mas é o melhor depurador de C ++ que já usei em qualquer plataforma e pode ser estendido para introspectar seus objetos de maneiras personalizadas (permitindo assim visualizar um Lista STL como uma lista real de objetos, e não um monte de membros de dados internos confusos etc.)

Nick Bastin
fonte
Não consigo fazer com que o DDD trabalhe com o X remoto; só trava com erros Xlib no meu thin client :(
Adam Hawes
O totalview parece uma alternativa viável. Não considero o DDD melhor do que a interface gdb curses.
Deft_code 27/08/09
8

Confira o projeto Eclipse CDT. É um plug-in para o Eclipse voltado para o desenvolvimento de C / C ++ e inclui uma perspectiva de depuração bastante rica em recursos (que nos bastidores usa GDB). Está disponível em uma ampla variedade de plataformas.

user14636
fonte
7

Similarmente confortável para o frontend do eclipse gdb é o front end do emacs, fortemente vinculado ao IDE do emacs. Se você já trabalha com o emacs, vai gostar:

Frontend do Emacs do GDB

Johannes Schaub - litb
fonte
6

Eu usei o KDbg (funciona apenas no KDE).

codeguru
fonte
3
O KDbg não se limita ao KDE.
Nobar
Isso é demais . Eu me pergunto onde esteve todo esse tempo.
Edmz 14/06/19
5

Eu tentei alguns guis diferentes para o gdb e achei o DDD o melhor deles. E embora eu não possa comentar sobre outras ofertas não-gdb para linux, usei vários outros depuradores em outras plataformas.

O gdb faz a maioria das coisas que você tem na sua lista de desejos. DDD coloca uma frente melhor sobre eles. Por exemplo, a troca de threads é simplificada. Definir pontos de interrupção é tão simples quanto você esperaria.

Você também recebe uma janela CLI, caso exista algo obscuro que você queira fazer.

O único recurso do DDD que se destaca acima de qualquer outro depurador que eu usei é o "gráfico" dos dados. Isso permite exibir e organizar estruturas, objetos e memória como caixas arrastáveis. Clicar duas vezes em um ponteiro abrirá os dados não referenciados com links visuais de volta ao pai.

Andrew Edgecombe
fonte
O ddd funciona em programas com argumentos? Não consegui fazê-lo passar os argumentos ... #
3132841
Se bem me lembro, o DDD pode fornecer uma janela de console diretamente para o GDB. No console do GDB, você pode definir os argumentos da linha de comando usando o comando "set args xyz abc".
Andrew Edgecombe
5

O Qt Creator-on-Linux certamente está a par do Visual Studio no Windows para C ++ atualmente. Eu diria até melhor no lado do depurador.

Marv
fonte
5

Há um IDE que está faltando nesta lista e é muito eficiente (eu o usei em muitos projetos C / C ++ sem problemas): Netbeans .

Florent
fonte
Eu prefiro muito o cgdb agora que me acostumei, mas o Netbeans foi um excelente trampolim do VS.
Zzxyz
3

O que pode ser explicado será limitado pelas informações de depuração que o g ++ produz, em grande medida. O Emacs fornece uma interface para o gdb que permite controlá-lo através das barras de ferramentas / menus e exibir dados em janelas separadas, além de digitar comandos gdb diretamente. O CDT do Eclipse fornece ferramentas semelhantes. Já ouvi falar de Anjuta e Code :: Blocks, mas nunca os usei.

Allen
fonte
3

Como alguém familiarizado com o Visual Studio, observei vários IDEs de código aberto para substituí-lo, e o KDevelop é o IMO mais próximo de ser algo que uma pessoa do Visual C ++ pode simplesmente sentar e começar a usar. Quando você executa o projeto no modo de depuração, ele usa o gdb, mas o kdevelop lida com a coisa toda, para que você não precise saber que é o gdb; você está apenas avançando ou atribuindo relógios a variáveis.

Ainda não é tão bom quanto o Visual Studio Debugger, infelizmente.


fonte
3

Você não menciona se está usando o Windows ou o UNIX.

Nos sistemas UNIX, o KDevelop é bom, mas eu uso o KDbg porque é fácil de usar e também funcionará com aplicativos não desenvolvidos no KDevelop.

O Eclipse é bom nas duas plataformas.

No Windows, existe um ótimo pacote chamado Wascana Desktop Developer, que é Eclipse CDT e MinGW, todos empacotados e pré-configurados de maneira adequada para o mínimo de esforço. É a melhor coisa que encontrei para desenvolver o código GNU no Windows.

Eu usei todos esses depuradores e nenhum deles é tão bom quanto o MS Dev Studio. O Eclipse / Wascana é provavelmente o mais próximo, mas possui limitações, como você não pode entrar em DLLs e não faz um trabalho tão bom ao examinar variáveis.

Adam Pierce
fonte
3

Você já deu uma olhada no depurador DS-5 ?

Existe uma versão paga que inclui muitos recursos úteis, mas você também pode usar o Community Edition de graça (o que também é bastante útil, especialmente para sistemas embarcados).

Tenho uma experiência positiva com essa ferramenta ao depurar aplicativos Android em dispositivos reais usando o eclipse.

Viktor Malyi
fonte
2

O IDE Code: Blocks C ++ possui um invólucro gráfico, com alguns dos recursos que você deseja, mas nada como o poder do VS.

crobar
fonte
2

O VisualGDB é outro plugin do Visual Studio para desenvolver e depurar aplicativos em plataformas Linux e incorporadas.

Sergey Zhukov
fonte
1

O KDevelop funciona muito bem.

Harold Ekstrom
fonte
1

Você já tentou o gdb -w com o cygwin gdb. É suposto ter uma interface do Windows que funcione razoavelmente bem.

O único problema que encontrei é que na minha máquina atual não funcionou dessa maneira até depois da instalação do ddd. Eu suspeito que exija o tcltk que foi instalado quando eu instalei o ddd.

BubbaT
fonte
0

A versão mais recente do Geany é compatível (apenas no Linux)

Milan Babuškov
fonte
0

Se você estiver procurando por gdb no Visual Studio, verifique o WinGDB .

Dominic.wig
fonte
0

Nos últimos 15 meses, uso o insight (fornecido com o FC6). Não é ótimo, está escrito em Tcl / Tk, mas é simples e útil. O DDD é de qualidade / utilidade semelhante, mas um pouco mais difícil de usar (várias dicas e omissões da GUI). Eu também tentei integrar o gdb ao meu IDE, o SlickEdit. Funcionou bem (joguei cerca de 4 horas com ele), mas não gostei das opções de contexto da GUI. Eu gosto que meu IDE permaneça inalterado enquanto estou depurando; no Windows, uso o SlickEdit for IDE e o Visual Studio Debugger para depuração. Assim, a partir do 3: Insight, DDD e SlickEdit, o Insight é minha primeira escolha, eu o uso> 95% das vezes, o gdb da linha de comando e o DDD compõem os outros 5%. Se eu tiver a chance, avaliarei o Eclipse em algum momento, meu PC de trabalho parece não ter RAM suficiente (apenas 1 GB) para executar o Eclipse razoavelmente bem.

Também ouvi muitos elogios ao TotalView, incluindo a primeira mão durante uma entrevista de emprego. Obtive uma avaliação para nossa empresa no final de 2008, mas no final não prosseguimos, pois o gdb era bom o suficiente para nossas necessidades; e é gratuito e onipresente.

Radim Cernej
fonte
0

Use www.zero-bugs.com/ Zero debugger, requer suporte C ++ 0x do gcc

siddhusingh
fonte
1
O site www.zero-bugs.com/ está inativo
vharron
0

Eu estava procurando por um depurador para percorrer um programa em execução. Diga: Anexe. O programa foi desenvolvido com o eclipse, mas talvez por causa de alguns obstáculos com multithread, nenhum arquivo de origem seja adequado. Tanto faz.

Fiquei muito confortável com o NetBeans.

  • [depurar] no menu -> Anexar Deugger ...
  • como processo escolheu aquele para depurar
  • como projeto [novo projeto]

Agora a janela desaparece e você não vê nada. desanexar do processo. O Read Square "Stop" ajuda.

  • importar a fonte do projeto como, por exemplo, pasta. "... / MyProject / src
  • Agora ele aparece no seu projeto e você pode definir pontos de interrupção.
  • novamente ttach depurador
  • escolheu o processo para depurar.
  • o depurador deve parar se o programa atingir o próximo ponto de interrupção.

Indo para [window] -> [Debugging] -> Sua janela tornará confortável.

Olho de Cutton
fonte