changeset 4:633fe343d3a7

add Chapter 5
author fuchita
date Thu, 14 Feb 2008 05:31:26 +0900
parents f3ef2f99653f
children c6eefabf35c0
files paper/evaluation.tex paper/master_paper.aux paper/master_paper.lof paper/master_paper.log paper/master_paper.toc
diffstat 5 files changed, 279 insertions(+), 86 deletions(-) [+]
line wrap: on
line diff
--- a/paper/evaluation.tex	Thu Feb 14 00:04:05 2008 +0900
+++ b/paper/evaluation.tex	Thu Feb 14 05:31:26 2008 +0900
@@ -1,10 +1,19 @@
 \chapter{分散デバッグ機能と評価}
 4章にてJava言語によるLindaサーバーとLinda APIの実装を行った事を報告した。
 Java言語による実装を得た事により、Federated Lindaへの機能拡張を比較的容易に行う事が可能となった。
+
+Federated LindaによるCompact Routingの実験においては、ルーティングテーブルの構築を例に、
+分散環境でのスケーラビリティをもった実装を確認しようとしたが、現状のLindaの実装では個々のノードが
+どのような通信状態をもってスケーラビリティを達成するのか明確に確認することが困難なばかりか、
+meshトポロジにおける実験においてはどのような通信状態によってノード全体のスケーラビリティが低下
+しているのかを確認するすべが存在しなかった。これを解決する為には、Federated Lindaの通信を阻害せずに
+大域的な情報でデバッグが行えるインターフェースが必要である。
+
 よって本章では分散環境におけるデバッグの難しさと分散デバッグに必要な機能について説明し、
-Federated Lindaを用いた分散開発環境でのデバッグ機能の追加を行う。
-本論文で提案する分散デバッグ機能のアプローチは、4章で問題点を挙げた通信状態のデバッグ
-をLinda サーバーへの拡張を行う事で実現するものである。
+そのうちから通信状態のスケーラビリティを確認するという点において、
+Federated Lindaでの分散開発環境におけるデバッグ機能の追加を行う。
+本論文でFederated Lindaに追加する分散デバッグ機能のアプローチは、
+4章で必要性を述べた通信状態のデバッグをJava版Linda サーバーへの拡張を行う事で実現するものである。
 
 %分散アルゴリズムのデバッグの難しさ
 %逐次アルゴリズムのデバッグ手法 ーー二分法
@@ -20,20 +29,199 @@
 %ビジュアライゼーション、意味不明なprintfを視覚的に
 
 \section{分散環境におけるデバッグ}
+分散環境における分散プログラムのデバッグは逐次型プログラムに比べて困難である。
+それは、一般的に用いられるgdbやIDE(統合開発環境)のデバッガが逐次プログラムをデバッグする為に
+機能を提供するのに対して、分散プログラムには、一般的なデバッガではデバッグが困難な特徴が
+存在する為である。
 
+ここでは一般的なデバッガを用いた二分法によるデバッグ手法と、分散プログラム開発での
+シーケンシャルなデバッグ手法では解決困難な問題点について説明する。
+\newpage
   \subsection{二分法による逐次アルゴリズムのデバッグ}
+一般的なgdbやIDEのデバッガ等を用いた二分法での逐次アルゴリズムのデバッグは、
+プログラムの単体試験や結合試験工程では大変有効な手法である。
 
+特にこの手法を用いるのにおいて適している状況は、プログラムにおけるバグの存在が既知であり、
+そのバグを生じさせることが確実であるという場合である。以下に二分法の基本的な方法を示す。
+
+\begin{center}
+\begin{itembox}[l]{二分法によるデバッグ}
+{\small
+\begin{center}
+\begin{verbatim}
+[条件定義]
+・バグは既知であり、再現性があること
+・バグはプログラムの状態(大域変数と局所変数の値)から判断できること
+
+[二分法]
+1. プログラムの初期実行をα = s0とする
+2. バグが発生している時点の実行ステートメントを β = sN とする
+3. N' = N/2 とし sN'のプログラムの状態にバグがあるかどうかを調べる
+4. バグがあるかないかによってα = sN'またはβ = sN'とする
+
+5. 上記を繰り返す事により α +1 = β となる
+6. これにより、バグが存在する時点の実行ステートメントとプログラムの状態を得る 
+\end{verbatim}
+\end{center}
+}
+\end{itembox}
+\end{center}
+
+上記の手法は簡単ながらも非常に強力なデバッグ手法であり、半ば自動化された作業によってバグの特定を
+可能とする。
+しかし、分散プログラムの開発工程においては、上記の手法では解決困難な状況が存在する。
+次は、そのような状況についてFeederated Lindaの通信状態のデバッグを例に説明する。
   \subsection{シーケンシャルなデバッグ手法の問題点}
+二分法を用いたシーケンシャルなデバッグ手法を前述したが、分散アルゴリズムの開発においては、
+二分法では解決できない状況が存在する。
+
+その状況とは、分散環境の各ノード、つまり全体を構成する個々の部品が正しく動いていても、全体としては
+正しく動かないという状況が存在する事を指す。
+
+ここで、Federated Lindaの通信状態を例にシーケンシャルなデバッグ(つまり単体の部品のデバッグ)が
+有効な場合と、単体のシーケンシャルなデバッグでは全体の動作の正しさをデバッグできない例をそれぞれ
+示す。
+
+\newpage
+\subsubsection{単体のデバッグが有効な例}
+図ref{seqdeb}に示すのはFederated Lindaにおける通信にて、単体のプロセスに対する逐次デバッグが
+有効な場合の通信状態である。
+この通信の場合においては1つのInputに対して1つのOutputを持つプロセスのデバッグを行う事で、
+全体の動作に関係する通信の流れをとらえることが可能であるからである。
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=8cm]{fig/pdf/seqdeb.pdf}
+\caption{単体のデバッグが有効なFederated Lindaの通信}
+\label{seqdeb}
+\end{center}
+\end{figure}
+
+\vspace{-1cm}
+\subsubsection{単体のデバッグでは全体の正しさをデバッグできない例}
+続いて図\ref{nonseqdeb}に示すのはFederated Lindaにおける通信で、単体のデバッグでは全体の正しさを
+デバッグできない例である。なぜ全体の動作に対する正しさをデバッグできないかというと、
+図に示すデバッガを接続したプロセスが1つのInputに対して1つのOutputを正しく出力する事がデバッグ
+できても、デバッグを行ったプロセスとは関係しない通信の流れが存在する為に、プロセスの全体の通信に対
+する依存性をデバッグできない為である。
+
+\begin{figure}[htbp]
+\begin{center}
+\includegraphics[width=8cm]{fig/pdf/nonseqdeb.pdf}
+\caption{単体ではデバッグが困難なFederated Lindaの通信}
+\label{nonseqdeb}
+\end{center}
+\end{figure}
+
+このような個々のプロセスをデバッグしただけでは全体の正しさが分からない場合、gdbやIDEのデバッガとい
+った逐次デバッガを全ノードに対して接続することが考えられるが、このような手法は全体を構成するノード
+が大規模化した場合においてその手間やリソースの集中におけるスケーラビリティの低下や、一度に大量の
+デバッグ情報が取り扱われる為に、その中から求めている情報を取捨選択することの困難さ等が問題となる
+ので、全ての分散環境におけるデバッグの手法としては正しくない。
+
+また、デバッガによるプロセスの停止によってネットワークの遅延や送信データの喪失が起これば、
+全体の通信の同期に必要とされるデータが揃わないまま同期を取ることになる。
+そうなると本当の意味での同期が取られていないということになり、バグ再現の為の条件が一定の通信状態
+を要求する場合において問題がある。
 
 \section{分散デバッグの機能}
+これまで二分法による逐次アルゴリズムのデバッグと分散環境におけるデバッグの問題点を述べた。
+ここでは、Federated Lindaに必要なデバッグ機能を提案するために、分散アルゴリズムにおいてデバッグ
+すべき要素を挙げ、それらをデバッグ可能な機能としてスナップショットを用いた分散デバッグを説明する。
+%また、Federated Lindaを用いる事でスケーラビリティを持った分散デバッグ機能を実現することについても
+%述べる。
+  \subsection{分散アルゴリズムにおいてデバッグすべき対象}
+%デバッグする対象 デッドロック、ライブロック、スケーラビリティ、通信の集中、大量のパケット(ACK)
+分散アルゴリズムにおいてデバッグすべき対象には以下のものがある。
+{\large
+\begin{center}
+\begin{verbatim}
+・デッドロック
+・ライブロック
+・スケーラビリティ
+・通信の集中
+・大量のパケットの送信
+\end{verbatim}
+\end{center}
+}
+   \subsubsection{デッドロック}
+   デッドロックとは、あるプロセスが永遠にブロックされている状態を示す。そのプロセスはある条件が
+   真になる(例えばある資源がreadできるようになる)のを待っているが、その条件を真にするはずの別の
+   プロセスがその条件を執行しないが為に、どちらも何もできなくなるのである。
 
-  \subsection{分散アルゴリズムにおいてデバッグすべき対象}
+   Federated Lindaにおけるプロセスの通信は、porlingベースの通信ループを持ち、
+   通信のパケットは一旦キューに溜め、ある一定のタイミングでまとめて通信を行うことから明確な「待ち」
+   というプロセス状態は発生しないが、ユーザープログラムによる「待ち」処理記述の可能性からデッド
+   ロックの検出は必要である。
+
+   \subsubsection{ライブロック}
+   ライブロックはデッドロックと異なり、プロセスは実行状態にあるものの、適用されるべきプログラム状態
+   の変化が何も成し遂げられない状態を指す。
+
+   例としてFederated Lindaにおけるプロセス間通信で説明すると、あるルーティングテーブルの構築に対
+   して2つのプロセスがそれぞれルーティング情報を保持しており、それぞれが相手のプロセスの
+   保持するルーティング情報を必要としている場合に、両者が相手のルーティング情報を得る為に自身
+   の保持する情報を解放した場合が考えられる。当然ながら、この両方のプロセスは相手の情報を期待して
+   いる為に実質的に何も達成できないという状態になる。
+
+   \subsubsection{スケーラビリティ}
+   スケーラビリティとは、サービスを受けるユーザー数が小規模から大規模に変化しても同じ様に同等
+   の能力を発揮できるという性能基準のことである。
+
+   Federated Lindaにおけるスケーラビリティの確認は、前提としてはノード数の増加に対する
+   プログラムの実行速度やサービス提供能力のパフォーマンスを、実際のアプリケーションを用いて
+   行う事があるが、現在の様に開発途中の段階では、部分的なプログラムの動作を見てその領域における
+   スケーラビリティを検証することが必要である。その点においてデバッグインターフェースによる
+   スケーラビリティの測定を可能とする事は重要であると考えられる。
+
+   \subsubsection{通信の集中}
+   分散プログラムの開発段階においては、通信の集中によるバグの発生は常に起こりうる事態である。
+   事実、Federated LindaによるCompact Routingの実装では、ある1つのノードに対してルーティング情報が
+   集中的に転送されるというバグが発生した。しかもそのようなバグは通常の逐次デバッガを用いた
+   デバッグ手法では、パケット集中を行っている複数のノードに対して複合的なバグ原因を検証することは
+   困難である。やはりこのような事態をデバッグするには従来の逐次デバッグとは異なる、分散デバッグ
+   インターフェースを持ってデバッグを行う事が必要と考える。
+
+   \subsubsection{大量のパケットの送信}
+   前述した通信の集中とは逆に、大量のパケットを単体、または複数のノードに対して通常とは異なる
+   量で送信するバグも起こりうる。このような場合、大量のパケットによる多ノードへの通信集中はもち
+   ろん、送信したノードからのACKnowledgementが大量にネットワーク内に流れる事による、通信効率の
+   低下や輻輳の発生を生み出す可能性がある。この問題をデバッグする為には、
+   プログラムが停止してからではデバッグできない事から、
+   輻輳を発生させているプロトコルを動的に検知する必要がある。
+   やはり、この場合も通常の逐次デバッガでは検知が困難なことから、分散デバッグインターフェースを
+   用いてデバッグを行う事が望ましいと考える。
+
 
   \subsection{スナップショットによる分散デバッグ}
+現在主に用いられている単体の逐次デバッガは分散環境用に作られていないことから、
+分散環境でのデバッグの場合、1プロセスに対してデバッガを動かすか、
+複数プロセスに対してそれぞれデバッガを動かしてデバッグを行うかの
+どちらかのスタイルがとられると述べたが、これではデバッグすべきプロセスが増えるとその
+手間はかなりの物になり、現実的なデバッグ手法とは言えない。
 
-  \subsection{分散デバッグ機能のスケーラビリティ}
+また、分散プログラム環境下ではプログラム状態の非決定性が存在するため通常のデバッグには無い
+問題があることも述べた。
+シーケンシャルなデバッグ手法では、通信の到着順序によっても分岐が変化してしまうことから、
+デバッグ対象のエラーに対して再現性を確保するのが難しいという問題である。
+通常、分散環境下でのデバッグではこれらの点をふまえて、
 
-\section{通信量のデバッグインターフェース}
+\begin{itemize}
+\item {通信におけるプログラムの状態が決定的になるようテストする}
+\item {非決定性をシミュレートする}
+\item {バリア同期で通信を止めてメモリ等の状態を調べる}
+\item {各ノードでスナップショットを取得し、ログを解析する}
+\end{itemize}
+
+といった方法がとられる。
+
+今回、Federated Lindaを用いた分散プログラム開発の為のデバッグインターフェースを考えるにあたって、
+上記のうちから「各ノードでスナップショットを取得し、ログを解析する」という手法が最も適している
+と考える。
+
+
+  %\subsection{分散デバッグ機能のスケーラビリティ}
+
+\section{通信状態のデバッグインターフェース}
 
   \subsection{Java版Linda サーバーへの機能実装}
 \begin{center}
@@ -95,8 +283,6 @@
 \section{考察}
 
 
-ここではFederated Lindaにおけるデバッグについて説明し、通常用いられるシーケンシャルなデバッグ
-手法が有効な場合と有効ではない場合について説明する。
 
 %\subsection{Federated Lindaのデバッグ}
 %現在主流なデバッグ手法はプレークポイント等を用いてプログラムを停止し、その地点からの前後でプログ
@@ -125,30 +311,6 @@
 
 
 %\subsection{分散環境におけるデバッグ}
-%分散プログラムでは複数のノードが独立で実行され、互いに
-%通信しあうという実行環境の為に、逐次プログラムよりもデバッグを行う事は難しい。
-
-%現在主に用いられている単体の逐次デバッガは分散環境用に作られていないことから、
-%分散環境でのデバッグの場合、1プロセスに対してデバッガを動かすか、
-%複数プロセスに対してそれぞれデバッガを動かしてデバッグを行うかの
-%どちらかのスタイルがとられる。これではデバッグすべきプロセスが増えるとその手間はかなりの物になり、
-%現実的なデバッグ手法とは言えない。
-
-%また、分散プログラム環境下ではプログラム状態の非決定性が存在するため通常のデバッグには無い
-%問題がある。
-%シーケンシャルなデバッグ手法では、
-%通信の到着順序によっても分岐が変化してしまうことから、デバッグ対象のエラーに
-%対して再現性を確保するのが難しいという問題である。
-%通常、分散環境下でのデバッグではこれらの点をふまえて、
-
-%\begin{itemize}
-%\item {通信におけるプログラムの状態が決定的になるようテストする}
-%\item {非決定性をシミュレートする}
-%\item {バリア同期で通信を止めてメモリ等の状態を調べる}
-%\item {各ノードでデバッグに必要な情報を取得し、ログを解析する}
-%\end{itemize}
-
-%といった方法がとられる。
 
 
 %今回は、Fedarated Lindaを用いた分散プログラム開発としてCompact Routingを用いるFederated Lindaの
--- a/paper/master_paper.aux	Thu Feb 14 00:04:05 2008 +0900
+++ b/paper/master_paper.aux	Thu Feb 14 05:31:26 2008 +0900
@@ -130,28 +130,38 @@
 \@writefile{toc}{\contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{51}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{52}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{51}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}二分法による逐次アルゴリズムのデバッグ}{52}}
 \@writefile{toc}{\contentsline {subsection}{\numberline {5.1.2}シーケンシャルなデバッグ手法の問題点}{52}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.2}分散デバッグの機能}{52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}分散デバッグ機能のスケーラビリティ}{52}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.3}通信量のデバッグインターフェース}{52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{53}}
-\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{53}}
-\newlabel{visual01}{{5.1}{53}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{53}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{53}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}評価}{53}}
-\@writefile{toc}{\contentsline {section}{\numberline {5.5}考察}{53}}
-\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}結論}{54}}
+\@writefile{toc}{\contentsline {subsubsection}{単体のデバッグが有効な例}{53}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 単体のデバッグが有効なFederated Lindaの通信}}{53}}
+\newlabel{seqdeb}{{5.1}{53}}
+\@writefile{toc}{\contentsline {subsubsection}{単体のデバッグでは全体の正しさをデバッグできない例}{53}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces 単体ではデバッグが困難なFederated Lindaの通信}}{53}}
+\newlabel{nonseqdeb}{{5.2}{53}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.2}分散デバッグの機能}{54}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{54}}
+\@writefile{toc}{\contentsline {subsubsection}{デッドロック}{54}}
+\@writefile{toc}{\contentsline {subsubsection}{ライブロック}{55}}
+\@writefile{toc}{\contentsline {subsubsection}{スケーラビリティ}{55}}
+\@writefile{toc}{\contentsline {subsubsection}{通信の集中}{55}}
+\@writefile{toc}{\contentsline {subsubsection}{大量のパケットの送信}{55}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{56}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.3}通信状態のデバッグインターフェース}{57}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{57}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{57}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{57}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{57}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}評価}{57}}
+\@writefile{toc}{\contentsline {section}{\numberline {5.5}考察}{57}}
+\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces 通信量のグラフィカルな表示ツール}}{58}}
+\newlabel{visual01}{{5.3}{58}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}結論}{59}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {6.1}まとめ}{54}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.2}今後の課題}{54}}
-\@writefile{toc}{\contentsline {chapter}{謝辞}{55}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.1}まとめ}{59}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.2}今後の課題}{59}}
+\@writefile{toc}{\contentsline {chapter}{謝辞}{60}}
 \bibcite{linda}{1}
 \bibcite{globalid}{2}
 \bibcite{dinamicrouting}{3}
@@ -164,5 +174,5 @@
 \bibcite{overlayweaver}{10}
 \bibcite{tomcat}{11}
 \bibcite{grizzly}{12}
-\@writefile{toc}{\contentsline {chapter}{参考文献}{56}}
-\@writefile{toc}{\contentsline {chapter}{発表文献}{57}}
+\@writefile{toc}{\contentsline {chapter}{参考文献}{61}}
+\@writefile{toc}{\contentsline {chapter}{発表文献}{62}}
--- a/paper/master_paper.lof	Thu Feb 14 00:04:05 2008 +0900
+++ b/paper/master_paper.lof	Thu Feb 14 05:31:26 2008 +0900
@@ -27,5 +27,7 @@
 \contentsline {figure}{\numberline {4.8}{\ignorespaces スーパークラスの抽出(1)}}{49}
 \contentsline {figure}{\numberline {4.9}{\ignorespaces スーパークラスの抽出(2)}}{49}
 \addvspace {10\p@ }
-\contentsline {figure}{\numberline {5.1}{\ignorespaces 通信量のグラフィカルな表示ツール}}{53}
+\contentsline {figure}{\numberline {5.1}{\ignorespaces 単体のデバッグが有効なFederated Lindaの通信}}{53}
+\contentsline {figure}{\numberline {5.2}{\ignorespaces 単体ではデバッグが困難なFederated Lindaの通信}}{53}
+\contentsline {figure}{\numberline {5.3}{\ignorespaces 通信量のグラフィカルな表示ツール}}{58}
 \addvspace {10\p@ }
--- a/paper/master_paper.log	Thu Feb 14 00:04:05 2008 +0900
+++ b/paper/master_paper.log	Thu Feb 14 05:31:26 2008 +0900
@@ -1,4 +1,4 @@
-This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19)  13 FEB 2008 21:23
+This is pTeX, Version 3.14159-p3.1.5 (euc) (Web2C 7.4.5) (format=platex-euc 2005.5.19)  14 FEB 2008 05:57
 **master_paper
 (./master_paper.tex
 pLaTeX2e <2005/01/04>+0 (based on LaTeX2e <2001/06/01> patch level 0)
@@ -497,26 +497,39 @@
 [51
 
 ]
-Overfull \vbox (18.61403pt too high) has occurred while \output is active []
-
+File: emblem-bitmap.eps Graphic file (type eps)
+ <emblem-bitmap.eps> [52]
+File: fig/pdf/seqdeb.pdf Graphic file (type eps)
+ <fig/pdf/seqdeb.pdf>
+File: fig/pdf/nonseqdeb.pdf Graphic file (type eps)
+ <fig/pdf/nonseqdeb.pdf>
 File: emblem-bitmap.eps Graphic file (type eps)
 
-<emblem-bitmap.eps> [52]
+<emblem-bitmap.eps> [53]
+File: emblem-bitmap.eps Graphic file (type eps)
+ <emblem-bitmap.eps> [54]
+File: emblem-bitmap.eps Graphic file (type eps)
+ <emblem-bitmap.eps> [55]
+File: emblem-bitmap.eps Graphic file (type eps)
+
+<emblem-bitmap.eps> [56]
 File: fig/pdf/visual01.pdf Graphic file (type eps)
  <fig/pdf/visual01.pdf>) (./conclusion.tex
 File: emblem-bitmap.eps Graphic file (type eps)
 
-<emblem-bitmap.eps> [53]
-第 6 章(54ページ)
-) (./thanx.tex [54
+<emblem-bitmap.eps> [57]
+File: emblem-bitmap.eps Graphic file (type eps)
+ <emblem-bitmap.eps> [58]
+第 6 章(59ページ)
+) (./thanx.tex [59
 
-]) (./bibliography.tex [55
+]) (./bibliography.tex [60
 
-]) (./appendix.tex [56
+]) (./appendix.tex [61
 
 ])
 No file master_paper.ind.
-[57
+[62
 
 ] (./master_paper.aux)
 
@@ -524,12 +537,12 @@
 
  ) 
 Here is how much of TeX's memory you used:
- 970 strings out of 95593
- 12076 string characters out of 1192020
+ 977 strings out of 95593
+ 12174 string characters out of 1192020
  68055 words of memory out of 1000001
- 4037 multiletter control sequences out of 10000+50000
- 19518 words of font info for 77 fonts, out of 500000 for 1000
+ 4042 multiletter control sequences out of 10000+50000
+ 19687 words of font info for 78 fonts, out of 500000 for 1000
  14 hyphenation exceptions out of 1000
  33i,12n,24p,300b,631s stack positions out of 1500i,500n,5000p,200000b,5000s
 
-Output written on master_paper.dvi (63 pages, 194184 bytes).
+Output written on master_paper.dvi (68 pages, 214760 bytes).
--- a/paper/master_paper.toc	Thu Feb 14 00:04:05 2008 +0900
+++ b/paper/master_paper.toc	Thu Feb 14 05:31:26 2008 +0900
@@ -62,23 +62,29 @@
 \contentsline {subsubsection}{メソッドの抽出}{47}
 \contentsline {subsection}{\numberline {4.4.4}C言語版とJava言語版のプログラムコード数}{50}
 \contentsline {chapter}{\numberline {第5章}分散デバッグ機能と評価}{51}
-\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{52}
+\contentsline {section}{\numberline {5.1}分散環境におけるデバッグ}{51}
 \contentsline {subsection}{\numberline {5.1.1}二分法による逐次アルゴリズムのデバッグ}{52}
 \contentsline {subsection}{\numberline {5.1.2}シーケンシャルなデバッグ手法の問題点}{52}
-\contentsline {section}{\numberline {5.2}分散デバッグの機能}{52}
-\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{52}
-\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{52}
-\contentsline {subsection}{\numberline {5.2.3}分散デバッグ機能のスケーラビリティ}{52}
-\contentsline {section}{\numberline {5.3}通信量のデバッグインターフェース}{52}
-\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{52}
-\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{53}
-\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{53}
-\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{53}
-\contentsline {subsection}{\numberline {5.4.2}評価}{53}
-\contentsline {section}{\numberline {5.5}考察}{53}
-\contentsline {chapter}{\numberline {第6章}結論}{54}
-\contentsline {section}{\numberline {6.1}まとめ}{54}
-\contentsline {section}{\numberline {6.2}今後の課題}{54}
-\contentsline {chapter}{謝辞}{55}
-\contentsline {chapter}{参考文献}{56}
-\contentsline {chapter}{発表文献}{57}
+\contentsline {subsubsection}{単体のデバッグが有効な例}{53}
+\contentsline {subsubsection}{単体のデバッグでは全体の正しさをデバッグできない例}{53}
+\contentsline {section}{\numberline {5.2}分散デバッグの機能}{54}
+\contentsline {subsection}{\numberline {5.2.1}分散アルゴリズムにおいてデバッグすべき対象}{54}
+\contentsline {subsubsection}{デッドロック}{54}
+\contentsline {subsubsection}{ライブロック}{55}
+\contentsline {subsubsection}{スケーラビリティ}{55}
+\contentsline {subsubsection}{通信の集中}{55}
+\contentsline {subsubsection}{大量のパケットの送信}{55}
+\contentsline {subsection}{\numberline {5.2.2}スナップショットによる分散デバッグ}{56}
+\contentsline {section}{\numberline {5.3}通信状態のデバッグインターフェース}{57}
+\contentsline {subsection}{\numberline {5.3.1}Java版Linda サーバーへの機能実装}{57}
+\contentsline {subsection}{\numberline {5.3.2}視覚的に通信状態を確認するツールの開発}{57}
+\contentsline {section}{\numberline {5.4}Compact Rotingの実装を用いた評価}{57}
+\contentsline {subsection}{\numberline {5.4.1}通信量のスケーラビリティ}{57}
+\contentsline {subsection}{\numberline {5.4.2}評価}{57}
+\contentsline {section}{\numberline {5.5}考察}{57}
+\contentsline {chapter}{\numberline {第6章}結論}{59}
+\contentsline {section}{\numberline {6.1}まとめ}{59}
+\contentsline {section}{\numberline {6.2}今後の課題}{59}
+\contentsline {chapter}{謝辞}{60}
+\contentsline {chapter}{参考文献}{61}
+\contentsline {chapter}{発表文献}{62}