blob: dd93bd84b59455831a39b1628f1226910f1395e8 [file] [log] [blame]
<!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">-&nbsp;</td>
<td><a href="#requirements" title="Requisitos">Requisitos</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#project" title="Criando o Projeto de Amostra">Criando o Projeto de Amostra</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#breakpoints" title="Criando Pontos de Interrupção">Criando Pontos de Interrupção</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</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">-&nbsp;</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>