NOME DURAÇÃO
Abertura do Curso de C++
Visão Geral da Linguagem C++
Instalando o Code::Blocks para Desenvolvimento C++
Instalando a IDE CLion para Desenvolvimento em C++
Primeiro Programa em C++
Comentários em C++
Indentação, Espaço em Branco e Ponto e Vírgula em C++
Variável em C++
Tipos Primitivos do C++
Características das Variáveis em C++
Manipulando Variáveis em C++
Nomenclatura de Variáveis em C++
Introdução às Stream em C++
Stream em C++
Manipulação de Dados em C++
Modificadores de Tipo em C++
Operadores Aritméticos do C++
Construindo uma Calculadora com C++
Módulo da Divisão em C++
Operadores Relacionais do C++
Tomada de Decisão em C++
Tomada de Decisão - Estrutura else em C++
Tomada de Decisão - Estrutura else em C++
Operadores Lógicos do C++
Operadores de Atribuíção do C++
Iteração em C++
Estrutura de Repetição for do C++
Operadores de Incremento e Decremento do C++
Tabuada em C++
Estrutura de Repetição while do C++
Programa em Looping em C++
Estrutura de Repetição do-while do C++
Estrutura de Seleção Múltipla switch do C++
Estrutura de Seleção Múltipla switch do C++ (parte II)
Depuração de Código C++
Depuração de Código C++ (parte II)
Depurando com o Clion Código C++
Depurando com o Code::Block Código C++
Blocos de Instrução em C++
Blocos de Instrução em C++ (parte II)
Blocos de Instrução em C++ (parte III)
Operador Ternário do C++
Operador Ternário do C++ (parte 2)
Instrução break do C++
Instrução break do C++ (parte II)
Instrução continue do C++
Precedência de Operadores do C++
Associatividade de Operadores em C++
Introdução aos Arrays em C++
Declaração de Arrays em C++
Arrays - Definições em C++
Inicialização de Arrays em C++
Percorrendo os Elementos de um Array em C++
Calculando a Média Aritmética com Arrays em C++
Arrays Multidimensionais em C++
Manipulação de Arrays Bidimensionais em C++
Laços Aninhados
Função Matricial em C++
Manipulando Planilhas em C++
Introdução às Estruturas em C++
Utilizando struct em C++

Nesta aula iniciaremos o estudo sobre a depuração de aplicações C++. Inicialmente, aprenderemos a depurar com a IDE CLion e nas próximas aulas, aprenderemos a depurar com a IDE Code::Block.

NOTA

O texto a seguir foi adaptado a partir da aula de depuração em Python com o PyCharm.

DEPURAÇÃO

IDE PyCharm em modo de depuração com um breakpoint na primeira linha

Depurar é a técnica de programação que possibilita manipular a execução do programa e dizer qual linha deve ser executada para verificar os valores das variáveis.

O dicionário Aurélio, diz que depurar significa: Procurar, detectar e corrigir erros em programa .

Atualmente, ferramenta que permitem a depuração de código estão presente em qualquer IDE para proporcionarem a inspeção interna do código durante a execução da aplicação. Há diversos recursos que permitem executar todo o código passo-a-passo e a cada etapa verificar o valor das variáveis e o que o nosso programa está de fato executando, ou seja, quais funções são invocadas e em qual momento serão.

É correto dizer que depurar um código significa a execução de cada linha vagarosamente, onde o programador é quem diz quando que determinada instrução deve ser executada. E também, a cada linha executada, é possível verificar o valor das variáveis que estão no escopo local e global

Algumas IDEs permitem a alteração do valor das variáveis e a execução de código paralelamente. Desta forma, conseguimos simular situações onde talvez, não fosse possível através do nosso programa.

A depuração é comumente utilizada na detecção de erros e no entendimento do estado da nossa aplicação, do valor contido em cada variável, num determinado instante, numa determinada função ou objeto.

Podemos dizer que é possível depurar qualquer código de qualquer linguagem, até porque, esse é recurso é, atualmente, considerado elementar para a correta construção de software. Algumas vezes, a depuração consiste num recurso disponibilizado por uma determinada IDE, noutras vezes, a capacidade de depuração acaba sendo uma ferramenta disponibilizada pela linguagem, isto é, a Máquina Virtual ou o Compilador da linguagem é quem disponibilizam esses recursos e capacidades.

Neste Curso de C++, estamos utilizando tanto a IDE CLion como também o Code::Blocks e ambas IDE's oferecem grande capacidade para depuração e análise interna em tempo de execução.

O RECURSO DE DEPURAÇÃO

A depuração é um recurso disponibilizado pelo compilador ou interpretador da linguagem. Portanto, nativamente, conseguimos depurar o código através da linha de comando, semelhante a forma como executamos o código.

As IDE, ao implementarem os recursos de depuração, estão de fato negociando com o compilador ou interpretador o local em que deverá haver interrupções e todos os demais recursos.

É importante sabermos que não são as IDE que implementam a capacidade de depurar o código, elas apenas dialogam com o compilador ou interpretador e fornecem uma forma gráfica para depuração.

PRIMÓRDIOS DA DEPURAÇÃO

Todas as vezes em que utilizamos a função cout() enviando valores à saída padrão, estamos de certa forma, depurando "inspecionando" nosso código de forma arcaica. Ou seja, estamos inspecionando o valor das variáveis e o estado do programa utilizando a função print.

É comum que novas linguagens de programação não tragam a funcionalidade de depurar o código implementado, portanto, o programar é obrigado a trabalhar enviando para a saída padrão o valor dos membros que ele deseja conhecer os valores.

Linguagens como JavaScript, PHP e ASP são exemplos notáveis de linguagens que foram lançadas no mercado sem que os desenvolvedores disponibilizassem uma forma de depurar o código de forma eficiente.

PERFORMANCE

A execução em modo de depuração só deve ser executada quando necessário, até porque, a perfomance é muito inferior ao que temos com a execução normal. Por isso, só execute um código em forma de depuração quando houver um razão para isso.

O QUE SIGNIFICA CURSOR DE EXECUÇÃO?

Cursor de execução é o termo que utilizamos para nos referirmos a linha de código em que estamos, ou melhor, na linha onde estamos.

Na imagem a seguir podemos ver a execução de um simples código. Observe na linha 9, em azul, o cursor de execução e na linha 11 podemos ver o uso de um breakpoint. É importante lembrar que o sistema de cor pode ser personalizado, portanto, não existe um padrão e não podemos nos referir ao cursor ou ao breakpoint como sendo uma linha de uma determinada cor.

IDE PyCharm com breakpoint e cursor de execução

O QUE SIGNIFICA breakpoint?

A palavra breakpoint, significa, na depuração de programas, o número da linha em que a execução do código será interrompido para o início da depuração.

Esse é um recurso permite interrompermos a execução do nosso programa num determinado ponto. Assim, podemos marcar em qual local do programa desejamos iniciar a depuração e quando o cursor de execução chegar na linha demarcada, a execução será interrompida e a IDE trará o código em que ocorreu a interrupção.

Na imagem acima, é possível ver um breakpoint na primeira linha da IDE PyCharm. Normalmente, os breakpoints são representados por uma bola vermelha no canto esquerdo [margem] dos editores de código.

O MODO DE DEPURAÇÃO

Ao executarmos um código em modo de depuração, teremos uma tela semelhante a que temos na imagem a seguir. Como podemos ver, os menus estão habilitados, até porque, estamos executando em modo de depuração.

IDE PyCharm em modo de depuração com um breakpoint e menu com as opções

OPÇÕES DE EXECUÇÃO

Normalmente, desejaremos somente executar a instrução em que o cursor está posicionado, noutras vezes, desejaremos depurar determinada função que será executada e noutras vezes, desejaremos finalizar a depuração da função e voltar ao fluxo anterior.

Pra todas essas situações, há teclas de atalho que facilitam o trabalho e a verificação dos valores.

Neste artigo utilizamos imagens da IDE PyCharm que possui a mesma base do CLion, portanto, todas as imagens e teclas de atalho são iguais ou então, muito semelhantes.

  • Shift+F10 (Run): executa o script
  • Shift+F9 (Debug): executa em modo de depuração (debug)
  • Ctrl+F5 (Rerun): executa da mesma forma que a anterior
  • Shift+Alt+F10 (Choose configuration and ru): exibe o menu que contém as configurações de execução e roda o script
  • Shift+Alt+F9 (Choose configuration and debug): exibe o menu que contém as configurações de execução e roda o script em modo de depuração
  • F8 (Step Over): executa a linha onde o cursor está
  • F7 (Step Into): entra na função e posiciona o cursor na primeira linha
  • Shift+F8(Step Out): termina a depuração da função e o cursor retorna ao local anterior
  • Shift+Alt+F8 (Force Step Over): o cursor não entra no código da função mesmo que haja um breakpoint

A DEPURAÇÃO COMO ESTUDO

Neste artigo tratamos a depuração principalmente como uma ferramenta para o desenvolvimento e correção de problemas em nossos códigos, o que de fato está correto, porém, utilizar somente para isso é não aproveitar ao máximo o poder da ferramenta.

A depuração deve ser utilizada durante toda a fase de estudo e, posteriormente, quando desejarmos entender como o interpretador do Python está lidando com determinada situação.

Em vista de que temos a disposição todas as variáveis e que podemos criar e/ou invocar funções, devemos ver a depuração como um recurso que vai muito além de simplesmente procurar por erros e sim, como uma ferramenta que devemos utilizar durante todo o estudo do desenvolvimento de software.



Tags curso, cpp

Comentários

comments powered by Disqus