// 
//     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.



image::images/netbeans-stamp-80-74.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.4 e 8.0"]

|===
|-  |<<requirements,Requisitos>> 

|-  |<<project,Criando o Projeto de Amostra>> 

|-  |<<breakpoints,Criando Pontos de Interrupção>> 

|-  |<<starting,Iniciando uma Sessão de Depuração>> 

|-  |<<inspecting,Inspecionando o Estado da Aplicação>> 
|===


== 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[]
3. Você pode remover o ponto de interrupção, clicando no ícone na margem esquerda.
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[]
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[]
5. Seu ponto de interrupção da função é definido e adicionado à lista na janela Pontos de Interrupção.
image::images/function_breakpoint2.png[]
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[]
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[]
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[]

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[]
4. Abra a janela Variáveis e observe que uma variável é exibida.
5. Clique no ícones Expandir para expandir a estrutura. 
image::images/local_variables1.png[]
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.
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[]

8. Clique na guia Variáveis e observe a longa lista de variáveis. 
image::images/local_variables2.png[]
9. Clique na guia Pilha de Chamadas e observe que há somente um quadro na pilha.
10. Escolha Janela > Depuração > Registros. 
A janela Registros se abre, exibindo o conteúdo atual dos registros. 
image::images/registers.png[] 
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[] 
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.
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+]
