blob: 7a181ae738cd66857131c6413fbc0c421287f45f [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Tutorial Depurando Projetos C/C++
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Tutorial Depurando Projetos C/C++ - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Tutorial Depurando Projetos C/C++
Março de 2013 [Número da revisão: V8.0-1]
O breve tutorial a seguir o guia por algumas funcionalidades de depuração de um projeto C ou C++ no NetBeans IDE.
== Requisitos
*Para seguir este tutorial, são necessários os recursos e o software a seguir.*
|===
|Software ou Recurso |Versão Necessária
|NetBeans IDE |link:https://netbeans.org/downloads/index.html[+versão 7.4 ou 8.0 com o módulo de plug-in C/C++ do NetBeans+]
|JDK (Java Developer Kit) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+versão 7 ou 8+]
|===
Consulte as link:../../../community/releases/80/install.html[+Instruções de instalação do NetBeans IDE+] e link:../../../community/releases/80/cpp-setup-instructions.html[+Configurando o NetBeans IDE para C/C++/Fortran+] para obter informações sobre como fazer download e instalar o software necessário.
== Criando o Projeto de Amostra
O NetBeans IDE com C/C++ usa o depurador ``gdb`` e fornece inúmeras funcionalidades para a depuração dos seus projetos. Para explorar essas funcionalidades, você usará o projeto ``Quote`` . Caso você ainda não tenha criado esse projeto, faça o seguinte:
1. Escolha Arquivo > Novo Projeto.
2. No assistente do projeto, expanda a categoria Amostras e selecione a subcategoria C/C++.
3. Selecione a subcategoria Aplicações, em seguida, selecione o projeto ``Quote`` . Clique em Próximo e, em seguida, Finalizar.
== Criando Pontos de Interrupção
Você pode criar e manipular pontos de interrupção em seu código a qualquer momento sem iniciar uma sessão de depuração.
=== Criando e Removendo um Ponto de Interrupção de Linha
1. No projeto ``Quote_1`` , abra o arquivo ``quote.cc`` .
2. Defina um ponto de interrupção clicando na margem esquerda da janela Editor de código-fonte ao lado da linha 171 ( ``response = readChar("Digite o tipo do módulo do disco: (S para discos únicos, R para RAID; Q - sair)", 'S');`` ). A linha é realçada em vermelho para indicar que o ponto de interrupção está definido.
image::images/line_breakpoint1.png[]
[start=3]
. Você pode remover o ponto de interrupção, clicando no ícone na margem esquerda.
[start=4]
. Escolha Janela > Depuração > Pontos de Interrupção para abrir a janela Pontos de interrupção. Seu ponto de interrupção de linha é listado no nó C/C++.
image::images/line_breakpoint2.png[]
[start=5]
. Expanda o nó C/C++ para ver seu ponto de interrupção.
image::images/line_breakpoint2_expand.png[]
=== Criando um Ponto de Interrupção da Função
1. Clique no botão Criar Novo Ponto de Interrupção na margem esquerda da janela Pontos de Interrupção ou escolha Depurar > Novo Ponto de Interrupção (Ctrl+Shift+F8) para abrir a caixa de diálogo Novo Ponto de Interrupção.
2. Na lista Tipo de Depurador, selecione Nativo.
3. Na lista Tipo de Ponto de Interrupção, selecione Função.
4. Digite o nome da função ``Customer::GetDiscount`` no campo de texto Nome da Função. Clique em OK.
image::images/function_breakpoint1.png[]
[start=5]
. Seu ponto de interrupção da função é definido e adicionado à lista na janela Pontos de Interrupção.
image::images/function_breakpoint2.png[]
[start=6]
. Clique no botão Selecionar Grupos de Ponto de Interrupção na margem esquerda para organizar os pontos de interrupção em diferentes grupos e selecione Tipo.
image::images/group_breakpoint_type.png[]
[start=7]
. Expanda os grupos de Arquivo:Linha e Função para exibir seus pontos de interrupção.
image::images/breakpoint_types.png[]
== Iniciando uma Sessão de Depuração
Quando você inicia uma sessão de depuração, o IDE inicia o depurador ``gbd`` , em seguida, executa a aplicação dentro do depurador. O IDE abre automaticamente as janelas do depurador e a barra do depurador e imprime a saída do depurador na janela de Saída.
1. Inicie uma sessão de depuração para o projeto ``Quote_1`` clicando no botão Depurar Projeto image::images/debugbutton.png[] ou escolhendo Depurar > Depurar Projeto.
O depurador é iniciado e a aplicação é executada. A barra de ferramentas do depurador é exibida.
image::images/debugger_toolbar.png[]
[start=2]
. Abra a janela Sessões escolhendo Janela > Depuração > Sessões.
A sessão de depuração é mostrada nessa janela.
== Inspecionando o Estado da Aplicação
1. A aplicação ``Quote_1`` solicita a entrada na janela de Saída (Depuração).
2. Insira um nome de cliente depois do prompt "Insira o nome do cliente:".
A aplicação é interrompida no ponto final da função Customer::GetDiscount definida anteriormente e o arquivo customer.cc é aberto no editor, na linha em que a função é chamada. A janela Pontos de Interrupção lista os dois pontos de interrupção que você definiu anteriormente. A seta do contador de programas verde será exibida na parte superior do ícone do ponto de interrupção da função.
image::images/function_breakpoint3.png[]
[start=3]
. Clique na guia da janela Pilha de Chamadas ou selecione Janela > Depurando > Pilha de Chamadas. A pilha de chamadas mostra três quadros.
image::images/call_stack.png[]
[start=4]
. Abra a janela Variáveis e observe que uma variável é exibida.
[start=5]
. Clique no ícones Expandir para expandir a estrutura.
image::images/local_variables1.png[]
[start=6]
. Clique no botão Continuar na barra de ferramentas.
A função ``GetDiscount`` é executada, imprimindo o desconto do cliente na janela de Saída (Depuração). Em seguida, é solicitado que você faça a entrada.
[start=7]
. Insira a entrada em resposta aos prompts.
O programa para no próximo ponto de interrupção, o ponto de interrupção de linha definido anteriormente. No arquivo ``quote.cc`` , a seta verde do contador de programa aparece sobre o ícone do ponto de interrupção indicando a linha em que o programa é parado.
image::images/line_breakpoint3.png[]
[start=8]
. Clique na guia Variáveis e observe a longa lista de variáveis.
image::images/local_variables2.png[]
[start=9]
. Clique na guia Pilha de Chamadas e observe que há somente um quadro na pilha.
[start=10]
. Escolha Janela > Depuração > Registros.
A janela Registros se abre, exibindo o conteúdo atual dos registros.
image::images/registers.png[]
[start=11]
. Escolha Janela > Depuração > Desmontar.
A janela Desmontar é aberta, exibindo as instruções de montagem do arquivo de código-fonte atual.
image::images/disassembly.png[]
[start=12]
. Clique no botão Continuar na barra de ferramentas e continue inserindo entradas em resposta aos prompts na janela de Saída até que o programa seja concluído.
[start=13]
. Quando você pressiona Enter para sair do programa, sua sessão de depuração termina. Para terminar a sessão de depuração antes que a execução do programa seja concluída, você pode clicar no botão Finalizar Sessão do Depurador na barra de ferramentas ou escolher Depurar > Finalizar Sessão do Depurador.
== Consulte Também
Consulte a link:https://netbeans.org/kb/trails/cnd.html[+Trilha do Aprendizado C/C+++] para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.
link:mailto:users@cnd.netbeans.org?subject=Feedback:%20Debugging%20C/C++%20Projects%20-%20NetBeans%20IDE%207.4%20Tutorial[+Enviar Feedback neste Tutorial+]