blob: 31d2c9c3641a524d760c4d35e1249572470d8497 [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>Contribuição de <i>Ann Rice</i> e mantida por <i>Susan Morgan</i> <br> Julho de 2012</em> [Número da versão: V7.2-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 IDE 7.2.
</p>
<!-- END INTRO -->
<h3>Conteúdo</h3>
<img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2" class="stamp" src="../../../images_www/articles/72/netbeans-stamp.gif" title="O conteúdo desta página se aplica ao NetBeans IDE 7.2">
<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.2 com 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</a></td>
</tr>
</table>
<p>Consulte as <a href="../../../community/releases/72/install.html">Instruções de Instalação do NetBeans IDE 7.2</a> e <a HREF="../../../community/releases/72/cpp-setup-instructions.html"> Configurando e Instalando o NetBeans 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, usaremos 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 161 (<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" src="../../../images_www/articles/72/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. Os pontos de interrupção de linha são listados na janela.<br> <img alt="Tela da janela de Pontos de Interrupção" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint2.png">
</li>
</ol>
<h3><a name="FunctionBreakpoint"></a>Criando um Ponto de Interrupção da Função</h3>
<ol>
<li>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 drop-down Tipo de Ponto de Interrupção, defina o tipo como 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" src="../../../images_www/articles/72/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" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint2.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 imprime a saída do depurador na janela Saída.</p><ol>
<li>Inicie uma sessão de depuração do projeto <tt>Quote_1</tt>, clicando com o botão direito do mouse no nó do projeto e escolhendo Depurar. O depurador é iniciado e a aplicação é executada.
</li>
<li>Abra a janela Sessões escolhendo Janela > Depuração > Sessões. 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.</li>
<li>Insira um nome de cliente depois do prompt "Insira o nome do cliente:".
</li>
<li>A aplicação interrompe o ponto de interrupção que você definiu anteriormente. 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" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint3.png">
</li>
<li>Abrir a janela Pilha de Chamada escolhendo Janela >Depuração >Pilha de Chamada. A pilha de chamadas mostra três quadros.<br> <img alt="Tela da guia da Pilha de Chamada" src="../../../images_www/articles/72/cnd/debugging/call_stack.png">
</li>
<li>Abra a janela Variáveis e observe que uma variável é exibida. Clique no botão superior na coluna esquerda na guia Variáveis para mostrar Autos ao invés de variáveis locais.</li>
<li>Clique no ícones Expandir para expandir a estrutura. <br> <img alt="Tela da guia Variáveis" src="../../../images_www/articles/72/cnd/debugging/local_variables1.png">
</li>
<li>Clique no botão Continuar na barra de ferramentas. A função <tt>GetDiscount</tt> é executada, imprimindo o desconto do cliente na janela E/S Externa. Em seguida, é solicitado que você faça a entrada.
</li>
<li>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 <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" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint3.png"> <br><br>
</li>
<li>
Clique na guia Variáveis e observe a longa lista de variáveis. <br> <img alt="Tela da guia Variáveis Locais" src="../../../images_www/articles/72/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. A janela Registros se abre, exibindo o conteúdo atual dos registros. <br> <img alt="Tela da janela Registros" src="../../../images_www/articles/72/cnd/debugging/registers.png"> <br>
</li>
<li>Escolha Janela > Depuração > Desmontar. A janela Desmontar é aberta, exibindo as instruções de montagem do arquivo de código-fonte atual. <br> <img alt="Tela da janela Desmontador" src="../../../images_www/articles/72/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 Saída até que o programa seja concluído. 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 com o botão direito do mouse na sessão na guia Sessões e escolher Finalizar ou Depurar > Finalizar Sessão do Depurador.
</li>
</ol>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Debugging%20C/C++%20Projects%20-%20NetBeans%20IDE%207.2%20Tutorial">Enviar Feedback neste Tutorial</a></div>
</body>
</html>