| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <title>Tutorial Depurando Projetos C/C++</TITLE> |
| <meta name="DESCRIPTION" content="Short tutorial that demonstrates debugging C/C++ |
| projects in NetBeans IDE"> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > |
| <meta name="author" content="Susan Morgan"><!--Optional tag--> |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> |
| </head> |
| <body> |
| <a name="top"></a> |
| |
| <h1>Tutorial Depurando Projetos C/C++</h1> |
| <!-- START INTRO --> |
| <div class="articledate" style="margin-left: 0px;font-style:italic;"> |
| <!-- <p><em>Contributed by <i>Ann |
| Rice</i> and maintained by <i>Susan Morgan</i> --><br>Março de 2013</em> [Número da revisão: V8.0-1]</div> |
| |
| <p>O breve tutorial a seguir o guia por algumas funcionalidades de depuração de um projeto C ou C++ no NetBeans IDE. |
| </p> |
| <!-- END INTRO --> |
| <h3>Conteúdo</h3> |
| <img alt="O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.4 e 8.0" class="stamp" src="../../../images_www/articles/74/netbeans-stamp-80-74.png" title="O conteúdo desta página se aplica ao NetBeans IDE 7.4 e 8.0"> |
| <table class="b-none vatop " cellpadding="0" cellspacing="0"> |
| <tr> |
| <td class="hyphen">- </td> |
| <td><a href="#requirements" title="Requisitos">Requisitos</a></td> |
| </tr> |
| <tr> |
| <td class="hyphen">- </td> |
| <td><a href="#project" title="Criando o Projeto de Amostra">Criando o Projeto de Amostra</a></td> |
| </tr> |
| <tr> |
| <td class="hyphen">- </td> |
| <td><a href="#breakpoints" title="Criando Pontos de Interrupção">Criando Pontos de Interrupção</a></td> |
| </tr> |
| <tr> |
| <td class="hyphen">- </td> |
| <td><a href="#starting" title="Iniciando uma Sessão de Depuração">Iniciando uma Sessão de Depuração</a></td> |
| </tr> |
| <tr> |
| <td class="hyphen">- </td> |
| <td><a href="#inspecting" title="Inspecionando o Estado da Aplicação">Inspecionando o Estado da Aplicação</a></td> |
| </tr> |
| </table> |
| |
| <h2><a NAME="requirements"></a>Requisitos</h2> |
| <p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b> </p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Software ou Recurso</th> |
| <th class="tblheader" scope="col">Versão Necessária</th> |
| </tr> |
| <tr> |
| <td class="tbltd1">NetBeans IDE</td> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">versão 7.4 ou 8.0 com o módulo de plug-in C/C++ do NetBeans</a></td> |
| </tr> |
| <tr> |
| <td class="tbltd1">JDK (Java Developer Kit)</td> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">versão 7 ou 8</a></td> |
| </tr> |
| </table> |
| <p>Consulte as <a href="../../../community/releases/80/install.html">Instruções de instalação do NetBeans IDE</a> e <a HREF="../../../community/releases/80/cpp-setup-instructions.html">Configurando o NetBeans IDE para C/C++/Fortran</a> para obter informações sobre como fazer download e instalar o software necessário. |
| </p> |
| <h2><a name="project"></a>Criando o Projeto de Amostra</h2> |
| <p>O NetBeans IDE com C/C++ usa o depurador <tt>gdb</tt> e fornece inúmeras funcionalidades para a depuração dos seus projetos. Para explorar essas funcionalidades, você usará o projeto <tt>Quote</tt>. Caso você ainda não tenha criado esse projeto, faça o seguinte: |
| <ol> |
| <li>Escolha Arquivo > Novo Projeto.</li> |
| <li>No assistente do projeto, expanda a categoria Amostras e selecione a subcategoria C/C++.</li> |
| <li>Selecione a subcategoria Aplicações, em seguida, selecione o projeto <tt>Quote</tt>. Clique em Próximo e, em seguida, Finalizar. |
| </li> |
| </ol> |
| <h2><a name="breakpoints"></a>Criando Pontos de Interrupção</h2> |
| <p> |
| Você pode criar e manipular pontos de interrupção em seu código a qualquer momento sem iniciar uma sessão de depuração. |
| </p> |
| <div class="indent"> |
| <h3><a name="LineBreakpoint"></a>Criando e Removendo um Ponto de Interrupção de Linha</h3> |
| <ol> |
| <li> |
| No projeto <tt>Quote_1</tt>, abra o arquivo <tt>quote.cc</tt>. |
| </li> |
| <li>Defina um ponto de interrupção clicando na margem esquerda da janela Editor de código-fonte ao lado da linha 171 (<tt>response = readChar("Digite o tipo do módulo do disco: (S para discos únicos, R para RAID; Q - sair)", 'S');</tt>). A linha é realçada em vermelho para indicar que o ponto de interrupção está definido.<br> <img alt="Tela da janela Editor de Código-fonte" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/line_breakpoint1.png"> |
| </li> |
| <li>Você pode remover o ponto de interrupção, clicando no ícone na margem esquerda. |
| </li> |
| <li>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++.<br> <img alt="Tela da janela de Pontos de Interrupção" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/line_breakpoint2.png"> |
| </li> |
| <li>Expanda o nó C/C++ para ver seu ponto de interrupção.<br> <img alt="Tela da janela de Pontos de Interrupção" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/line_breakpoint2_expand.png"></li> |
| </ol> |
| <h3><a name="FunctionBreakpoint"></a>Criando um Ponto de Interrupção da Função</h3> |
| <ol> |
| <li>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. |
| </li> |
| <li>Na lista Tipo de Depurador, selecione Nativo.</li> |
| <li> |
| Na lista Tipo de Ponto de Interrupção, selecione Função. |
| </li> |
| <li>Digite o nome da função <tt>Customer::GetDiscount</tt> no campo de texto Nome da Função. Clique em OK. <br> <img alt="Tela da caixa de diálogo Novo Ponto de Interrupção" class="margin-around" src="../../../images_www/articles/74/cnd/debugging/function_breakpoint1.png"> |
| </li> |
| <li>Seu ponto de interrupção da função é definido e adicionado à lista na janela Pontos de Interrupção.<br> <img alt="Tela da janela de Pontos de Interrupção" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/function_breakpoint2.png"> |
| </li> |
| <li>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.<br> <img alt="Tela de categorias de agrupamento na janela Pontos de interrupção" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/group_breakpoint_type.png"></li> |
| <li>Expanda os grupos de Arquivo:Linha e Função para exibir seus pontos de interrupção. <br> <img alt="Tela de pontos de interrupção organizados por tipo" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/breakpoint_types.png"></li> |
| </ol> |
| </div> |
| |
| <h2><a name="starting"></a>Iniciando uma Sessão de Depuração</h2> |
| <p>Quando você inicia uma sessão de depuração, o IDE inicia o depurador <tt>gbd</tt>, 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.</p> |
| <ol> |
| <li>Inicie uma sessão de depuração para o projeto <tt>Quote_1</tt> clicando no botão Depurar Projeto <img alt="Tela do botão depurar" src="../../../images_www/articles/74/cnd/debugging/debugbutton.png"> ou escolhendo Depurar > Depurar Projeto. <br>O depurador é iniciado e a aplicação é executada. A barra de ferramentas do depurador é exibida. <br> <img alt="Tela de botões da barra de ferramentas do depurador" class="margin-around" src="../../../images_www/articles/74/cnd/debugging/debugger_toolbar.png"> |
| </li> |
| <li>Abra a janela Sessões escolhendo Janela > Depuração > Sessões. <br>A sessão de depuração é mostrada nessa janela. |
| </li> |
| </ol> |
| <h2><a name="inspecting"></a>Inspecionando o Estado da Aplicação</h2> |
| <ol> |
| <li>A aplicação <tt>Quote_1</tt> solicita a entrada na janela de Saída (Depuração).</li> |
| <li>Insira um nome de cliente depois do prompt "Insira o nome do cliente:". |
| <p>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. <br> <img alt="Tela da guia Pontos de Interrupção" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/function_breakpoint3.png"></p> |
| </li> |
| <li>Clique na guia da janela Pilha de Chamadas ou selecione Janela > Depurando > Pilha de Chamadas. A pilha de chamadas mostra três quadros.<br> <img alt="Tela da guia da Pilha de Chamada" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/call_stack.png"> |
| </li> |
| <li>Abra a janela Variáveis e observe que uma variável é exibida. </li> |
| <!--<li>Click the <img src="../../../images_www/articles/74/cnd/debugging/autos.png" alt="Show autos button"> |
| button in the left column in the Variables tab to show Autos instead of local |
| variables.</li>--> |
| <li>Clique no ícones Expandir para expandir a estrutura. <br> <img alt="Tela da guia Variáveis" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/local_variables1.png"> |
| </li> |
| <li>Clique no botão Continuar na barra de ferramentas. <br>A função <tt>GetDiscount</tt> é executada, imprimindo o desconto do cliente na janela de Saída (Depuração). Em seguida, é solicitado que você faça a entrada. |
| </li> |
| <li>Insira a entrada em resposta aos prompts. |
| <p>O programa para no próximo ponto de interrupção, o ponto de interrupção de linha definido anteriormente. No arquivo <tt>quote.cc</tt>, a seta verde do contador de programa aparece sobre o ícone do ponto de interrupção indicando a linha em que o programa é parado. <br><br> <img alt="Tela do Editor de Código-fonte" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/line_breakpoint3.png"> |
| </p> |
| </li> |
| <li> |
| Clique na guia Variáveis e observe a longa lista de variáveis. <br> <img alt="Tela da guia Variáveis Locais" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/local_variables2.png"> |
| </li> |
| <li>Clique na guia Pilha de Chamadas e observe que há somente um quadro na pilha. |
| </li> |
| <li>Escolha Janela > Depuração > Registros. <br>A janela Registros se abre, exibindo o conteúdo atual dos registros. <br> <img alt="Tela da janela Registros" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/registers.png"> <br> |
| </li> |
| <li>Escolha Janela > Depuração > Desmontar. <br>A janela Desmontar é aberta, exibindo as instruções de montagem do arquivo de código-fonte atual. <br> <img alt="Tela da janela Desmontador" class="margin-around b-all" src="../../../images_www/articles/74/cnd/debugging/disassembly.png"> <br> |
| </li> |
| <li> |
| 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. </li> |
| <li>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. |
| </li> |
| </ol> |
| <p> |
| </p><h2>Consulte Também</h2> |
| <p>Consulte a <a href="https://netbeans.org/kb/trails/cnd.html">Trilha do Aprendizado C/C++</a> para obter mais artigos sobre o desenvolvimento com C/C++/Fortran no NetBeans IDE.</p> |
| |
| <div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Debugging%20C/C++%20Projects%20-%20NetBeans%20IDE%207.4%20Tutorial">Enviar Feedback neste Tutorial</a></div> |
| |
| </body> |
| </html> |