Por que a depuração reversa é raramente usada? [fechadas]

53

O gdb implementou suporte para reverter a depuração em 2009 (com o gdb 7.0). Eu nunca ouvi falar sobre isso até 2012. Agora eu acho extremamente útil para certos tipos de problemas de depuração. Eu queria ter ouvido isso antes.

Corrija-me se estiver errado, mas minha impressão é que a técnica ainda é raramente usada e a maioria das pessoas não sabe que existe. Por quê?

Você conhece alguma comunidade de programação onde o uso de depuração reversa é comum?

Informações básicas:

por Philipp Claßen 04.01.2013 / 15:56
fonte

5 respostas

26

Por exemplo, a execução no modo de depuração com gravação é muito dispendiosa em comparação com o mesmo modo de depuração normal; Também consome muito mais memória.

É mais fácil diminuir a granularidade de nível de linha para nível de chamada de função. Por exemplo, o depurador padrão no eclipse permite que você "solte no quadro", que é essencialmente um salto de volta ao início da função com uma reconfiguração de todos os parâmetros (nada feito no heap é revertido e finally bloqueia não são executados, por isso não é um verdadeiro depurador reverso; tenha cuidado com isso).

Observe que isso já está disponível há vários anos e funciona lado a lado com a substituição de códigos quentes.

    
por 04.01.2013 / 16:39
fonte
10

Para obter uma visão geral das opções e produtos de tecnologia, veja uma série de postagens de blogs que escrevi há um ano (e alguns acompanhamentos desde então):

Meu sentimento de por que é tão pouco usado é que requer hardware especial, ou usando um depurador especial, ou configurando seu sistema corretamente. A maioria das pessoas não investe tempo para obter o valor máximo de suas ferramentas de depuração, infelizmente.

E o fato de que o "padrão barato" do gdb é quase inutilmente lento e tem alguns problemas de estabilidade para tudo, menos para os sistemas de destino mais comuns.

    
por 06.01.2013 / 22:33
fonte
10

Como já mencionado, o desempenho é fundamental, por ex. com a depuração reversível do gdb, executar algo como o gzip mostra uma desaceleração de 50.000x em comparação com a execução nativa. Existem alternativas comerciais, no entanto: Eu trabalho para Desfazer undo.io , e nosso produto UndoDB faz o mesmo, mas com uma desaceleração de menos de 2x. Existem outros depuradores reversíveis comerciais disponíveis também.

    
por 06.01.2013 / 15:24
fonte
4

Da minha experiência como engenheiro de vendas do depurador do TotalView, as pessoas sabem que ele existe, mas não acreditam que ele funcione, independentemente da lentidão (aceitável ou não).

A Universidade de Cambridge recentemente fez uma pesquisa intitulada "Falha na adoção de custos de depuração reversa na economia global de US $ 41 bilhões anualmente" .

E voltando ao GDB, eu ouvi (muito) que a lentidão o torna inutilizável em um aplicativo "real".

Pessoalmente, adoraria ouvir mais pessoas usando a depuração reversa em aplicativos que não sejam "Hello world!"

    
por 31.01.2013 / 13:16
fonte
2

Acho importante expandir um pouco mais essa depuração "reversa" ou "histórica". Eu penso em entender sistemas complexos e comportamento naqueles, para reproduzir "eventos" que tornam o estado explícito é absolutamente crucial.

O que eu quero expressar é que você não está sozinho em se perguntar por que essa técnica não é aplicada hoje ou porque os problemas relacionados raramente são discutidos com clareza.

Então, vamos enfatizar dois conceitos muito importantes aqui:

1. Para entender um sistema de programação, é útil tornar o estado explícito

2. Para entender ainda mais um sistema de programação, repetir sequências de estado (eventos) pode ajudar muito.

Aqui estão algumas fontes que abordaram o problema e propuseram ou projetaram soluções para o problema (lidando com o estado em sistemas complexos):

- Fora do tar bit, papel: link Principais idéias: evitar, isolar ou tornar explícito o estado

-CQRS link Esta é uma combinação de dois conceitos: Segregação por Consulta de Comandos e Fornecimento de Eventos. Existem diferentes implementações (Java, C #, Scala). A repetição de seqüências de Tate e a evolução de um modelo de domínio são as partes cruciais aqui.

Se você realmente diminuir o zoom e ver a imagem muito ampla, você já pode ver que com o "aumento" da programação funcional as pessoas já estão ((des) conscientemente) atraídas pelo fp porque explícito! Mas isso só lida com o ponto um, para abordar o segundo, você precisa de outro conceito que possa ser descrito de forma "vagamente" como programação reativa funcional.

Então você pode dizer tudo bem, mas quem realmente usa CQRS e FRP? Eu diria (IMO porque eu não tenho números concretos), na verdade, muitas empresas são apenas o fato de não saberem que o trabalho que fazem tem essa terminologia. Talvez você pesquise um pouco no Google e ouça empresas que usam o CQRS, já existem algumas histórias de sucesso por aí. O FRP também está subindo lentamente como um exemplo que eu poderia dar à Netflix: link Que acaba de lançar uma implementação do RX que é realmente baseado em .NET (mas também tem uma implementação em Javascript). Então, as pessoas já estão usando essas técnicas hoje em dia, para entender sistemas complexos e torná-los ainda melhores. É por isso que eles usam técnicas de depuração reversa.

    
por 05.02.2013 / 15:55
fonte

Tags