diff --git a/tools/Forward/TraceDebugger_Forward.html b/tools/Forward/TraceDebugger_Forward.html index e28c0ce..759ffd1 100644 --- a/tools/Forward/TraceDebugger_Forward.html +++ b/tools/Forward/TraceDebugger_Forward.html @@ -101,12 +101,14 @@

+ いったん終了アイコンを押してデバッグ実行を終了したあと, 再びデバッグアイコンをクリックしてデバッグ実行し, D.java の6行目で一時停止している状態にしてください.
左上の呼び出しスタックビューには, 現在一時停止している行をトップとしたメソッド呼び出しのスタックが表示されています.
表示されているメソッドシグ二チャをクリックすることで, 呼び出し元のスタックフレームや呼び出し先のスタックフレームを見ることができます.


+ いったん左上の呼び出しスタックビュー上で呼び出し先である「D.passB(B) 行: 6」を選択し, エディタ上で D.java が開いている状態にしてください.
トレースデバッガでは, トレースファイルに記録されたステートメント単位の実行時情報を元に, 実行を少しずつ進めていくことができます.
ここで, このステートメント単位は行単位よりも細かい粒度になっていることに注意してください.
右下のブレークポイントビューの「ステップオーバー」アイコンをクリックすると, 実行を行単位で進めます.
@@ -126,20 +128,23 @@
右下のブレークポイントビューの「ステップリターン」アイコンをクリックすると, 呼び出し元のメソッドに復帰するまで実行を進めたうえで,
その呼び出し元のメソッド内で次のステートメントにまで進めます.
ここでは, ステップリターンによって, 呼び出し元のメソッドである D クラスの passB(B) メソッドに復帰し,
- 呼び出し元では B.getC() の次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行が進みます.
+ 呼び出し元では B.getC() の次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行を進めます.


+ いったん終了アイコンをクリックしてデバッグ実行を終了したあと, 再びデバッグアイコンをクリックしてデバッグ実行し, D.java の6行目で一時停止している状態にしてください.
+ そのあと, ステップオーバーを1回押して7行目にまで進んだ状態にしてください.
右下のブレークポイントビューの「ステップネクスト」アイコンをクリックすると, 実行をステートメント単位で進めます.
「ステップイン」とは違い, こちらは呼び出し先のメソッドがあったとしても, その呼び出し先のメソッドには入ることはありません.
「ステップオーバー」では行単位で実行が進んでしまいますが, 「ステップネクスト」ではより細かいステートメント単位で同一メソッド実行内を進むことができます.
- この画像の場合では, 現在のメソッド呼び出しステートメントである B.getC() の呼び出し先には入らずに,
- そのまま次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行が進んでいます.
+ ここでは, ステップネクストによって, 現在のメソッド呼び出しステートメントである B.getC() の呼び出し先には入らずに,
+ そのまま次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行を進めます.


+ いったん終了アイコンをクリックしてデバッグ実行を終了したあと, 再びデバッグアイコンをクリックしてデバッグ実行し, D.java の6行目で一時停止している状態にしてください.
右上の変数ビューでは, 現在のスタックフレームから見える仮引数やフィールドの値(値がオブジェクトへの参照である場合はそのクラス名とID)を確認できます.
@@ -155,6 +160,8 @@



- 順方向トレースデバッガのときと同様に, トレースファイル(C:\Users\userXX\runtime-EclipseApplication\TraceDebuggerTest\test.trace)を読み込んで,
+ 順方向トレースデバッガのときと同様に, トレースファイル(C:\Users\userXX\runtime-EclipseApplication\TraceDebuggerTest\test.trace)を読み込んで,
ブレークポイント(D.java の6行目と, E.java の7行目)をEclipseから取り入れてください.
+ そのあと, デバッグアイコンをクリックしてデバッグ実行し, 再開ボタンを1回押して E.java の7行目で一時停止している状態にしてください.
このデバッガには, 「再開」を逆向きに行う機能があります.
ブレークポイントビューの「逆向きに再開」アイコンをクリックすると, 有効なブレークポイントが入っている行のうち,
現在の実行時点から実行を巻き戻して最初に遭遇する行まで実行が進み, そこで実行が再び一時停止します.
@@ -75,42 +76,35 @@

+ いったんステップオーバーを1回押して, D.java の7行目で実行が一時停止している状態にしてください.
このデバッガには, 「ステップオーバー」を逆向きに行う機能があります.
- ブレークポイントビューの「ステップバックオーバー」アイコンをクリックすると, 実行を行単位で戻ります.
- この画像の場合では, ステップバックオーバーによって, D クラスの passB(B) メソッドの7行目から6行目へと実行が戻っています.
+ ブレークポイントビューの「ステップバックオーバー」アイコンをクリックすると, 実行を行単位で巻き戻します.
+ ここでは, ステップバックオーバーによって, D クラスの passB(B) メソッドの7行目から6行目へと実行を巻き戻します.


+ いったんステップオーバーを2回押して, D.java の8行目で実行が一時停止している状態にしてください.
このデバッガには, 「ステップイン」を逆向きに行う機能があります.
- ブレークポイントビューの「ステップイン」アイコンをクリックすると, 実行をステートメント単位で戻り,
+ ブレークポイントビューの「ステップイン」アイコンをクリックすると, 実行をステートメント単位で巻き戻し,
呼び出し先のメソッドがある場合はその呼び出し先のメソッドに後ろから入ります.
- この画像の場合では, ステップバックインによって, ひとつ前の呼び出し先である E クラスの setC() メソッドへ入っています.
+ ここでは, ステップバックインによって, ひとつ前の呼び出し先である E クラスの setC() メソッドへ入っていきます.
なお, 逆方向に戻っていく関係上, 呼び出し先メソッドの開始時点ではなく終了時点に現在の実行が移る点に注意してください.


このデバッガには, 「ステップリターン」を逆向きに行う機能があります.
- ブレークポイントビューの「ステップバックリターン」アイコンをクリックすると, 呼び出し元からそのメソッドに入る直前まで実行を戻ります.
- この画像の場合では, ステップバックリターンによって, この E クラスの setC(C) メソッドが呼び出される直前の時点,
- すなわち, 呼び出し元である D クラスの passB(B) メソッドの7行目まで実行が戻ります.
- ,
+ ブレークポイントビューの「ステップバックリターン」アイコンをクリックすると, 呼び出し元からそのメソッドに入る直前まで実行を巻き戻します.
+ ここでは, ステップバックリターンによって, この E クラスの setC(C) メソッドが呼び出される直前の時点,
+ すなわち, 呼び出し元である D クラスの passB(B) メソッドの7行目まで実行を巻き戻します.


- ブレークポイントビューの「ステップネクスト」アイコンをクリックすると, 実行をステートメント単位で進めます.
- 「ステップイン」とは違い, こちらは呼び出し先のメソッドがあったとしても, その呼び出し先のメソッドには入ることはありません.
- 「ステップオーバー」では行単位で実行が進んでしまいますが, 「ステップネクスト」ではより細かいステートメント単位で同一メソッド実行内を進むことができます.
- この画像の場合では, 現在のメソッド呼び出しステートメントである B.getC() の呼び出し先には入らずに,
- そのまま次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行が進んでいます.
-


+ いったん, ステップバックインを1回押して, B.java の6行目で実行が一時停止している状態にしてください.
実行時点の登録ビューでは, 任意のタイミングで現在の実行時点を登録することができます.
- 現在の実行時点を登録するには, ビュー上にある追加ボタンをクリックしてください.
+ ここでは, 現在の実行時点を登録するに, ビュー上にある追加ボタンをクリックしてください.
登録された実行時点はビュー上に一覧で表示されます.




- 変数ビューで this などを開き, フィールドを選択した状態で右クリックすると, ポップアップメニューが表示されます.
- ここで, 「値の代入時点に飛ぶ」を選択すると, このフィールドで参照されているオブジェクトが実際に代入される直前の時点まで実行を遡ることができます.
+ いったんステップオーバーを2回押して, D.java の8行目で実行が一時停止している状態にしてください.
+ 変数ビューで this などを開き, フィールドを選択した状態で右クリックすると, ポップアップメニューが表示され,
+ 「値の代入時点に飛ぶ」を選択すると, このフィールドで参照されているオブジェクトが実際に代入される直前の時点まで実行を遡ることができます.
+ ここでは, this を開いたあとにそのフィールド e をさらに開き, 表示されたフィールド c を右クリックして「値の代入時点に飛ぶ」を選択してください.
+ すると, このフィールド c に値が代入された時点である E クラスの setC(C) メソッドの6行目にまで実行が巻き戻されます.

