blob: 3906bc8a87ed66b7d6968008925363c6087415f9 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>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>C/C++プロジェクトのデバッグのチュートリアル</h1>
<!-- START INTRO -->
<div class="articledate" style="margin-left: 0px;font-style:italic;">
<p><em>執筆: <i>Ann Rice</i>、管理: <i>Susan Morgan</i><br> 2012年7月</em> [リビジョン番号: V7.2-1]</div>
<p>この短いチュートリアルでは、NetBeans IDE 7.2のC/C++プロジェクトをデバッグするための機能の一部を学ぶことができます。
</p>
<!-- END INTRO -->
<h3>内容</h3>
<img alt="このページの内容は、NetBeans IDE 7.2に適用されます" class="stamp" src="../../../images_www/articles/72/netbeans-stamp.gif" title="このページの内容は、NetBeans IDE 7.2に適用されます">
<table class="b-none vatop " cellpadding="0" cellspacing="0">
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#requirements" title="要件">要件</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#project" title="サンプル・プロジェクトの作成">サンプル・プロジェクトの作成</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#breakpoints" title="ブレークポイントの作成">ブレークポイントの作成</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#starting" title="デバッグ・セッションの開始">デバッグ・セッションの開始</a></td>
</tr>
<tr>
<td class="hyphen">-&nbsp;</td>
<td><a href="#inspecting" title="アプリケーションの状態の検査">アプリケーションの状態の検査</a></td>
</tr>
</table>
<h2><a NAME="requirements"></a>要件</h2>
<p><b>このチュートリアルに従うには、次のソフトウェアとリソースが必要です。</b> </p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">ソフトウェアまたはリソース</th>
<th class="tblheader" scope="col">必須バージョン</th>
</tr>
<tr>
<td class="tbltd1">NetBeans IDE</td>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">バージョン7.2とNetBeans C/C++プラグイン・モジュール</a></td>
</tr>
<tr>
<td class="tbltd1">Java Developer Kit (JDK)</td>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">バージョン7</a></td>
</tr>
</table>
<p>必要なソフトウェアのダウンロードとインストールについては、<a href="../../../community/releases/72/install.html">NetBeans IDE 7.2のインストール手順</a>および<a HREF="../../../community/releases/72/cpp-setup-instructions.html">C/C++/Fortran向けのNetBeans IDEの構成</a>を参照してください。
</p>
<h2><a name="project"></a>サンプル・プロジェクトの作成</h2>
<p>C/C++を使用するNetBeans IDEでは、<tt>gdb</tt>デバッガが使用され、プロジェクトをデバッグするための多数の機能が提供されています。<tt>Quote</tt>プロジェクトを使用して、これらの機能を確認します。まだこのプロジェクトを作成していない場合は、次の操作を実行します。
<ol>
<li>「ファイル」>「新規プロジェクト」を選択します。</li>
<li>プロジェクトのウィザードで「サンプル」カテゴリ、「C/C++」サブカテゴリを順番に展開します。</li>
<li>「アプリケーション」サブカテゴリを選択して、「<tt>Quote</tt>」プロジェクトを選択します。「次」をクリックして、「終了」をクリックします。
</li>
</ol>
<h2><a name="breakpoints"></a>ブレークポイントの作成</h2>
<p>
デバッグ・セッションを開始することなく、いつでもコードにブレークポイントを作成したり、操作したりできます。
</p>
<div class="indent">
<h3><a name="LineBreakpoint"></a>行ブレークポイントの作成と除去</h3>
<ol>
<li>
<tt>Quote_1</tt>プロジェクトの<tt>quote.cc</tt>ファイルを開きます。
</li>
<li>行161 (<tt>response=readChar("Enter disk module type: (S for single disks, R for RAID; Q - exit)", 'S');</tt>)の横の、「ソース・エディタ」ウィンドウの左マージンをクリックすることによって行ブレークポイントを設定します。赤く強調表示されている行は、ブレークポイントが設定されていることを示します。<br> <img alt="「ソース・エディタ」ウィンドウのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint1.png">
</li>
<li>ブレークポイントは、左マージン内のアイコンをクリックすることによって除去できます。
</li>
<li>「ウィンドウ」>「デバッグ」>「ブレークポイント」を選択し、「ブレークポイント」ウィンドウを開きます。ウィンドウに行ブレークポイントが一覧表示されます。<br> <img alt="「ブレークポイント」ウィンドウのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint2.png">
</li>
</ol>
<h3><a name="FunctionBreakpoint"></a>関数ブレークポイントの作成</h3>
<ol>
<li>「デバッグ」>「新規ブレークポイント」([Ctrl]+[Shift]+[F8])を選択して「新規ブレークポイント」ダイアログ・ボックスを開きます。
</li>
<li>
「ブレークポイント・タイプ」ドロップダウン・リストでタイプを「関数」に設定します。
</li>
<li>「関数名」テキスト・フィールドに「<tt>Customer::GetDiscount</tt>」を入力します。「OK」をクリックします。 <br> <img alt="「新規ブレークポイント」ダイアログ・ボックスのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint1.png">
</li>
<li>関数ブレークポイントが設定され、「ブレークポイント」ウィンドウの一覧に追加されます。<br> <img alt="「ブレークポイント」ウィンドウのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint2.png">
</li>
</ol>
</div>
<h2><a name="starting"></a>デバッグ・セッションの開始</h2>
<p>デバッグ・セッションを開始すると、IDEによって<tt>gdb</tt>デバッガが起動され、そのデバッガ内でアプリケーションが実行されます。デバッガ・ウィンドウが自動的に開き、「出力」ウィンドウにデバッガの出力が出力されます。</p><ol>
<li><tt>Quote_1</tt>プロジェクトのプロジェクト・ノードを右クリックし、「デバッグ」を選択することによってプロジェクトのデバッグ・セッションを開始します。デバッガが起動し、アプリケーションが実行されます。
</li>
<li>「ウィンドウ」>「デバッグ」>「セッション」を選択して「セッション」ウィンドウを開きます。開いたウィンドウにデバッグ・セッションが表示されます。
</li>
</ol>
<h2><a name="inspecting"></a>アプリケーションの状態の検査</h2>
<ol>
<li><tt>Quote_1</tt>アプリケーションは、「出力」ウィンドウ上に入力を求めるメッセージを出力します。</li>
<li>「Enter customer name:」プロンプトの後に顧客名を入力します。
</li>
<li>前に設定した関数ブレークポイント位置でアプリケーションが停止します。「ブレークポイント」ウィンドウに、前に設定した2つのブレークポイントが表示されます。関数ブレークポイントのブレークポイント・アイコンの上に、緑色のプログラム・カウンタの矢印が表示されます。<br><img alt="「ブレークポイント」タブのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/function_breakpoint3.png">
</li>
<li>「ウィンドウ」>「デバッグ」>「コール・スタック」を選択して「コール・スタック」ウィンドウを開きます。コール・スタックに3つのフレームが表示されます。<br> <img alt="「コール・スタック」タブのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/call_stack.png">
</li>
<li>「変数」ウィンドウを開いて、変数が1つ表示されていることを確認します。「変数」タブの左の列で先頭のボタンをクリックして、ローカル変数のかわりに「Autos」を表示します。</li>
<li>展開アイコンをクリックし、構造を展開します。<br><img alt="「変数」タブのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/local_variables1.png">
</li>
<li>ツールバーにある「続行」ボタンをクリックします。<tt>GetDiscount</tt>関数が実行され、外部のI/Oウィンドウに顧客の割引額が表示されます。その後、入力が求められます。
</li>
<li>このプロンプトに対して入力を行います。次のブレークポイント、すなわち前に設定した行ブレークポイントでプログラムが停止します。<tt>quote.cc</tt>ファイルでは、プログラムが停止した行を示すブレークポイントのアイコンの上に、緑色のプログラム・カウンタの矢印が表示されます。<br><br><img alt="「ソース・エディタ」のスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/line_breakpoint3.png"><br><br>
</li>
<li>
「変数」タブをクリックし、変数の一覧を確認します。 <br> <img alt="「ローカル変数」タブのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/local_variables2.png">
</li>
<li>「コール・スタック」タブをクリックし、スタック内にフレームが1つあることを確認します。
</li>
<li>「ウィンドウ」>「デバッグ」>「レジスタ」を選択します。「レジスタ」ウィンドウが開き、現在のレジスタの内容が表示されます。 <br> <img alt="「レジスタ」ウィンドウのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/registers.png"> <br>
</li>
<li>「ウィンドウ」>「デバッグ」>「逆アセンブリ」を選択します。「逆アセンブリ」ウィンドウが開き、現在のソース・ファイルのアセンブリ命令が表示されます。 <br> <img alt="逆アセンブリ・ウィンドウのスクリーンショット" src="../../../images_www/articles/72/cnd/debugging/disassembly.png"> <br>
</li>
<li>
ツールバーにある「続行」ボタンをクリックし、プログラムが完了するまで、「出力」ウィンドウのプロンプトに対応して入力を続けます。[Enter]を押してプログラムを終了するとデバッグ・セッションが終了します。プログラムの実行が完了する前にデバッグ・セッションを終了するには、「セッション」タブでセッションを右クリックし、「終了」を選択するか、「デバッグ」>「デバッガ・セッションを終了」を選択します。
</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">このチュートリアルに関するご意見をお寄せください</a></div>
</body>
</html>