Aprender os comandos GDB está na minha lista de balde, mas por enquanto há um depurador gráfico para plataformas * nix que aceita comandos Windbg e tem funcionalidade semelhante? Por exemplo, a capacidade de trazer várias janelas de memória editáveis, desmontar automaticamente em torno de uma área enquanto pisa, definir o tipo de desmontagem e ter uma janela com registros que têm valores editáveis?

Comentários

Resposta

Eu iniciei meu próprio frontend gdb chamado gdbgui que é um servidor (em python) que permite acessar um front-end completo em seu navegador .

captura de tela do gdbgui

Instalar

pip install gdbgui --upgrade 

ou baixe em gdbgui.com

Funciona em todas as plataformas (Linux, macOS e Windows) e navegadores com JavaScript.

Execute

Basta digitar

gdbgui 

em seu terminal e você r navegador abrirá uma nova guia.

Recursos

  • definir / remover pontos de interrupção
  • visualizar código-fonte, com código de máquina embutido opcional
  • selecionar quadro atual na pilha
  • percorrer o código-fonte ou código de máquina
  • criar / explorar variáveis
  • visualizar / selecionar threads
  • explorar memória
  • visualizar registros
  • funcionalidade completa do terminal gdb para que você possa enviar comandos gdb tradicionais e ver a saída do programa gdb / inferior
  • layout inspirado no incrível depurador Chrome
  • compatível com o RR da Mozilla, para depuração reversa

Comentários

  • Este é um bom trabalho, de verdade. O design atinge o cerne do caso de uso médio. Eu gosto disso. Também suporta depuração remota (ou melhor, suporta o uso do comando target remote host:port gdb. Muito bem. Talvez adicionar a capacidade de se conectar a um host remoto no menu seria uma boa adição -on. Seria possível reduzir o tamanho do ‘ registro`? Todas as informações estão disponíveis, mas (pelo menos no ARM) você pode ‘ para ver todos os registros de uma vez, você tem que rolar.
  • Os comentários aqui não são para suporte gdbgui individual. Por favor, abra um novo question on sx, ou use o gdbgui support channels / bug tracker.

Resposta

Embora algumas pessoas don ” Para cuidar de sua interface, vale a pena mencionar que o GDB também possui sua própria GUI integrada (chamada TUI).

Você pode iniciar o GDB no modo GUI com o comando: gdb -tui

Uma referência rápida aos comandos da TUI pode ser encontrada aqui: http://beej.us/guide/bggdb/#qref

Resposta

Eu geralmente usei Emacs GUD como uma interface GDB.

Suporte GDB no Emacs

Não é muito difícil de usar, permite que você defina pontos de interrupção visualmente (ou através da janela GDB, se preferir).

Ela possui várias visualizações diferentes que você pode acessar a partir de um menu GDB de nível superior:

Visualizações GUD

Ele também permite sutilezas como permitir que você inspecione valores passando o mouse sobre eles:

Valores do mouseover

Para usá-lo, primeiro você precisa navegar até a pasta do seu binário com C-x C-f e, em seguida, M-x gdb (Isso “s” Alt + X ” e digitando “gdb“). Depois de fazer isso, você pode digitar uma linha de comando gdb ou apenas clicar em [Enter] para aceitar o padrão. A partir daí, basta digitar “start” na janela gdb com todos os parâmetros que deseja passar para o programa que está depurando.

Depois disso, você está praticamente perfeito, mas com apenas uma visualização. Os menus na parte superior da tela em “GUD” permitirão que você abra outras visualizações relevantes para o que quer que você esteja tentando depurar.(Frames são janelas separadas, e “Windows” são janelas in-frame)

Normalmente, por padrão, um ponto de interrupção é definido no início do programa, e você pode navegar no seu código usando os botões na parte superior do a janela ou, se não tiver nenhum código, você pode personalizar sua visualização para permitir a desmontagem do binário que está olhando.

Os botões na parte superior da janela cercados por “{} “são para revisão em nível de código e os botões com” <> “em seu ícone são para depuração em nível de instrução. Portanto, você provavelmente vai querer se concentrar na esquerda se estiver fazendo a depuração de código normal e se concentrar mais na direita se estiver entrando nos detalhes reais.

Além disso, se você se perder, este ícone:

Informações GUD

É um livro inteiro que provavelmente pode responder às suas perguntas. A única vez que ele não existirá no Emacs é se você estiver no Debian (Ubuntu está bem) e instalou o Emacs de seus repositórios. Nesse caso, você precisará instalar “emacs<vesrsion>-common-non-dfsg” para obter os manuais. (sendo “<version>” os dígitos não decimais retornados por M-x version no Emacs)

Comentários

  • Isso é Spacemacs e não GNU Emacs, certo?
  • Não. Isso é simples ‘ ol GNU Emacs, acabei de ter o meu estilo para ficar assim. Nada do que mencionei acima é específico para minha configuração. (E, na verdade, o Spacemacs é apenas um conjunto de configurações do Emacs também, mas não tenho ideia se ele altera o uso do GDB)
  • Esse ‘ não tem estoque do Emacs. Que sistema operacional e pacotes você está executando?
  • Parece que você tem o pacote Power Line instalado entre outras coisas. emacswiki.org/emacs/PowerLine
  • @mrbean Isso no Linux Mint e sim, acho que meu tema Emacs em 2013 foi base16-tomorrow com PowerLine (bom reconhecimento btw!)

Resposta

Minha opinião é um pouco tendencioso, mas, para debugging assembler, o melhor “frontend” GDB que existe é o IDA (ele suporta comunicação com alvos GDB remotos). Para depuração de código-fonte, porém, eu recomendaria KDBG.

Comentários

  • Eu realmente recomendaria usar IDA ‘ s linux_server em GDB remoto, é ‘ mais capaz e rápido (uma vez que usa protocolo binário e não baseado em texto ).
  • Justifique sua recomendação. As respostas são escritas não apenas para o OP, mas para todas as outras pessoas que podem encontrar isso no futuro.
  • Basicamente porque você tem todo o poder do IDA (plug-ins, script IDAPython, GUI conhecida,. ..) e não é apenas um front-end para GDB.

Resposta

Mesmo correndo o risco de um downvoting severo , Gostaria de seguir o velho prompt gdb e recomendar contra uma interface de interface de usuário. Comecei aprendendo um uso mais avançado do GDB lendo Arte da depuração alguns anos atrás. Descreve GDB e DDD, bem como Eclipse como front-ends para GDB.

É certo que na maioria das vezes estou usando o Vim como meu IDE no terminal e tmux (anteriormente screen com byobu). Portanto, estou alternando entre os painéis em meu multiplexador de terminal para alternar rapidamente entre o código e o depurador. O prompt do GDB – depois de algumas semanas tentando a TUI – ed tudo o que sempre desejei e você deve ter em mente que você pode anexar várias vezes ao mesmo processo (assim, dando uma olhada na memória da maneira como você o descreve).

Parece que todos os front-ends estão atrasados um pouco – sem surpresa – e faz mais sentido aceitar o prompt do GDB e suas sutilezas e esquisitices. Lembre-se de que em uma configuração bare-metal pode ser a única coisa que você tem. Portanto, faz sentido aprendê-lo mesmo se você encontrar uma GUI “decente” para seus próprios padrões.

As versões mais recentes do GDB também suportam scripts Python e, por meio disso, fornecem um conjunto muito poderoso de ferramentas para depurar, mesmo apenas a partir da linha de comando.

Se você absolutamente insiste em usar um frontend GUI, eu também recomendaria o IDA Pro pela simples razão de que ele fornece um único frontend para uma variedade de depuradores e você precisa aprenda (ou personalize) seus atalhos apenas uma vez. Desvantagens: preço e flexibilidade quando você não tem uma licença em uma máquina em particular ou nenhuma maneira de fazer um túnel para um servidor GDB etc …


Não conheço nenhum frontend do GDB que aceita comandos WinDbg. E eu só posso enfatizar novamente: você colherá os frutos do tempo investido em aprender GDB baunilha de qualquer maneira. Não se intimide com o esforço. Existem muitas coisas no WinDbg que são específicas para a maneira como o Windows funciona, o kernel do Windows funciona e assim por diante. GDB é muito mais genérico.

Resposta

Gostaria de sugerir DDD .

Se você tem o código-fonte, deve verificar o QTCreator . Seu depurador é semelhante ao do Visual Studio “s, se você estiver familiarizado com isso.

Comentários

  • I ‘ Usamos DDD e não era ‘ um fã. No entanto, ‘ vou dar uma olhada no QtCreator, obrigado!
  • DDD é ótimo para exibir estruturas de dados, você pode colocá-las em uma placa (uma espécie de mesa leve ) Daí data-display-debugger.
  • DDD parece estranho e desatualizado à primeira vista, mas ‘ é realmente poderoso.

Resposta

Não é GUI, mas um bom substituto assim que você se acostumar com ela (e pessoalmente acho que é mais rápido para a maioria das coisas ) -> https://github.com/gdbinit/Gdbinit .

Lembrei-me de quando comecei * nix reversão e tive para enfrentar o gdb pela primeira vez. Odiei e + mammon original “s gdbinit salvou meu dia. Atualmente, eu prefiro gdb à maioria dos depuradores de GUI.

Experimente 🙂

Divulgação completa: eu sou o autor da ferramenta.

Comentários

  • Você deve escrever uma declaração de que Gdbinit é um software que você ‘ está mantendo …
  • Então? É ‘ gratuito, disponível para todos. Não estou exatamente tentando vender nada aqui. Nossa …!
  • @ fg- Isso ainda pode ser alguma publicidade que não é baseada na experiência, mas unicamente no fato de você ter escrito essa ferramenta.
  • Então você pode ‘ t anunciar suas ferramentas úteis que resolvem problemas e ter que esperar que outros façam isso? Esse ‘ é um modo de pensamento realmente estranho para um solucionador de problemas ” comunidade “.
  • @ fG- leia a FAQ: reverseengineering.stackexchange.com/faq#promotion

Resposta

Eu realmente não gosto de DDD, é “90” na interface do usuário.

Eu gostaria gostaria de recomendar o KDBG, que é uma interface do KDE para o gdb. Além disso, você pode querer dar uma olhada no Cgdb, que é uma extensão do curses para gdb.

Recentemente eu encontrei Nemiver , parece realmente promissor.

Comentários

  • O KDBG também funciona bem para desmontar e depurar sem o código-fonte? As capturas de tela mostravam apenas o código-fonte.
  • Não ‘ não sei, nunca tentei antes …
  • ” it ‘ s tão 90 ‘ s nele ‘ s GUI ” … mais como 80 ‘ s
  • A aparência da GUI é a única desvantagem?

Resposta

cgdb também é uma ótima opção se você usar o Vim.

O cgdb compartilha muitos comandos com o vim, como pesquisa regex e muitos outros. Na página inicial do cgdb:

A interface do teclado é modelada após o vim, então os usuários do vim devem se sentir em casa usando o cgdb.

Resposta

Eu geralmente uso Vim + gdb no modo CLI ao codificar, etc. Mas às vezes uma GUI é preferível.

Uma outra opção, além das mencionadas, é Code :: Blocks. Ele usa GDB e CDB como back-end. Para GDB, você pode selecionar AT & T, Intel ou custom para desmontagem. Ele suporta modo misto, bem como listagem de instruções puras. Você pode configurá-lo posteriormente para avaliar as variáveis (no código) sob o cursor, etc.

Há apenas uma janela de despejo de memória, mas você também pode inserir comandos brutos do GDB no Linha de comando na parte inferior que é impressa na janela – portanto, por exemplo despejos de memória.

Possui uma janela separada para registros de CPU, eles não são diretamente editáveis, mas você pode definir valores pela linha de comando mencionada, bem como outros valores:

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

A imagem abaixo mostra em ação com a depuração do código-fonte em um KVM (Abra o link para visualizá-lo em formato maior).

Um problema que tive com ele são alguns bugs de GUI etc. quando o executo no Ubuntu 12 – UB 12 tem a versão 10.10. Mas uma compilação e instalação da versão atual , 12.11, foi indolor.

Por exemplo, para instalação por caminho de instalação personalizado (se sua distribuição não tiver uma versão atualizada e você quiser as duas):

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

Código :: Blocos com GDB

Resposta

Este artigo do Dr. Dobbs mostra em detalhes GUIs para depuração no sistema operacional Linux. Eu recomendo o Qt-Creator chamado GDB debug baseado em ambiente Linux.De qualquer forma, o artigo apenas analisa a depuração do código C ++, mas isso é o suficiente para mostrar os recursos de depuração do GDBs.

Resposta

Vou recomendar UltraGDB , que é uma interface gráfica do GDB e um IDE leve baseado na tecnologia Eclipse.

Resposta

Existe a Affnic Debugger GUI . Não é gratuito, mas existe uma versão lite. Está disponível para Windows, Linux & MacOS.

No site oficial,

Affinic Debugger GUI .aka. ADG, foi projetado como uma interface gráfica de usuário para vários depuradores. Esta compilação é voltada especificamente para GDB, o depurador GNU. Com as janelas gráficas, o ADG pode liberar todo o poder dos depuradores visualizando vários tipos de informações em uma visualização e manobrando depuradores com um clique fácil. O ADG também fornece um terminal de comando integrado para os usuários inserirem o comando do depurador diretamente. O ADG está disponível em Linux / Windows / Mac OS X.

Resposta

VisualStudio.Code ( VS.Code ) roda em Linux e tem uma extensão “Native Debug” que permite usar gdb. Tem uma IU muito responsiva. É extremamente leve em recursos. A experiência se aproxima um pouco do Visual Studio no Windows para desenvolvedores C ++ (embora não haja visualização de montagem). Os principais atalhos de depuração são os mesmos prontos para uso (F5, Shift-F5, F10, F11).

A instalação é feita com dois cliques (um para instalar o VS.Code, o outro para instalar a extensão), ótimo para quem vem do Windows Visual Studio e quer ser produtivo imediatamente.

Resposta

Existe “s Voltron , que é uma IU de depurador Python extensível que suporta LLDB, GDB, VDB e WinDbg / CDB (via PyKD) e roda em macOS, Linux e Windows. Para os três primeiros, ele suporta x86, x86_64 e arm com suporte até arm64 para lldb enquanto adiciona suporte até powerpc para gdb.

O autor também escreveu um plugin binário Ninja para integrar o Voltron – https://github.com/snare/binjatron – que permite visualizações sincronizadas.

Resposta

Observe que o seguinte se aplica apenas à depuração do código-fonte.

CLion é um IDE usando gdb. Você ainda tem a capacidade de digitar comandos, mas muitos recursos são perfeitamente implementados na GUI, como revisão, visualização de variáveis atualmente ativas e configuração breakpoints. Leia mais here .

Resposta

Você pode usar GDBFrontend . Este é um front-end GDB muito hackável.

Divulgação completa: eu sou o desenvolvedor.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *