Eu queria saber quais são algumas técnicas para localizar qual código implementou um recurso específico, em um aplicativo de desktop.
Sou desenvolvedor júnior, com apenas experiência profissional em programação na web. Na Web, é mais fácil fazer isso. Por exemplo, você "inspeciona" um botão com as ferramentas do navegador e pode ver o que está sendo feito ao clicar nele. E, presumindo que você tenha o código fonte completo, você pode detalhar a hierarquia das chamadas.
Mas como você faz isso em aplicativos de desktop? Pelo menos, sem ter que mergulhar na base de código completa?
debugging
desktop-application
py_script
fonte
fonte
Respostas:
Rastreamento de volta
O rastreio posterior está localizando um terminal em um evento associado ao recurso (veja abaixo). Uma vez lá, um ponto de interrupção é colocado no depurador. O recurso é acionado e quando o depurador para. A pilha de chamadas é revisada para rastrear novamente o caminho da chamada. Ao subir a pilha de chamadas, você pode fazer anotações sobre estados variáveis ou colocar novos pontos de interrupção para inspecionar o evento novamente.
O recurso é acionado novamente e o depurador para nos novos pontos de interrupção. Você pode repetir o rastreamento de volta ou executar o rastreamento de avanço até que a meta seja encontrada.
Prós e contras
Descoberta do ponto de extremidade
Para depurar um recurso, você precisa saber onde, no código-fonte, o objetivo final é alcançado. Somente a partir deste ponto você pode voltar atrás para ver como o código chegou lá. Um exemplo; Para entender como desfazer é realizado. Você sabe onde no código as coisas são desfeitas, mas não sabe como as coisas chegam lá . Seria um candidato a retroceder para descobrir como o recurso funciona.
Rastreamento para a frente
O rastreio para frente está localizando um ponto inicial para um evento associado a um recurso (veja abaixo). Uma vez lá, as mensagens de log são inseridas no código-fonte ou os pontos de interrupção são definidos. Esse processo é repetido à medida que você avança mais longe do ponto de partida até descobrir a meta do recurso.
Prós e contras
Descoberta do ponto inicial
Você pode usar palavras-chave, identificadores de interface do usuário (IDs de botões, nomes de janelas) ou fácil de encontrar ouvintes de eventos associados ao recurso. Por exemplo, você pode começar com o botão usado para acionar um recurso de desfazer .
Processo de eliminação
Você pode pensar nisso como o ponto médio em comparação com as posições de ponto inicial e final . Você executa um processo de eliminação quando já sabe que um pedaço de código é usado em um recurso, mas não é o início nem o fim do recurso.
A direção que você toma do ponto médio depende do número de entradas e saídas. Se o pedaço de código for usado em muitos lugares, o rastreamento a partir dessa posição poderá consumir muito tempo, pois todos precisam ser inspecionados. Você então emprega um processo de eliminação para reduzir esta lista. Como alternativa, você pode executar um rastreamento a partir deste ponto, mas novamente se o pedaço de código se ramificar para muitos lugares, isso também pode ser um problema.
Você precisa reduzir as direções da posição, não seguindo caminhos que claramente não seriam executados para o recurso. Passando esse código e colocando apenas pontos de interrupção onde provavelmente está relacionado ao recurso.
A depuração do ponto médio geralmente requer mais recursos IDE avançados. A capacidade de ver hierarquia de código e dependências. Sem essas ferramentas, é difícil de fazer.
Prós e contras
fonte
Supondo que o recurso esteja vinculado a alguma coisa da interface do usuário, como um botão ou menu, o que costumo fazer é seguir (muito tedioso, mas funciona). Isso está olhando o código-fonte, não usando um depurador .
SUPER_BUTTON_3 = "Super Feature X3"
. Para referência futura, lembre-se deste nome de arquivo.Como @amon observou, às vezes um depurador é mais simples ...
fonte
Se você encontrar algum código relacionado, poderá usar o software de controle de origem para mostrar a confirmação completa ou confirmações próximas que o adicionaram. Isso deve mostrar tudo o que foi necessário para implementar esse recurso.
Uma maneira fácil de encontrar um ponto de partida é procurar na sua base de código procurando o texto no botão.
Muitas vezes, as pessoas colocam um ID de problema do rastreador de problemas em suas mensagens de confirmação. Se você encontrar um problema descrevendo a solicitação do recurso, poderá procurar confirmações com esse ID de problema.
fonte