diff --git a/tools/Forward/TraceDebugger_Forward.html b/tools/Forward/TraceDebugger_Forward.html index 9f7092e..759ffd1 100644 --- a/tools/Forward/TraceDebugger_Forward.html +++ b/tools/Forward/TraceDebugger_Forward.html @@ -81,8 +81,8 @@

ブレークポイントを生成したら, 右下のブレークポイントビューの「デバッグ」アイコンをクリックすると, 実際にデバッグ実行が開始されます.
- 最初は, 有効なブレークポイントが入っている行のうち, 時系列上で最初に遭遇するブレークポイントまで実行が進み, そこで実行が一時停止します.
- この画像の場合では, D クラスの passB(B) メソッドの6行目が該当しているため, そこまで実行が進んだ状態で一時停止しています.
+ 最初は, 有効なブレークポイントが入っている行のうち, 時系列上で最初に遭遇する行まで実行が進み, そこで実行が一時停止します.
+ ここでは, D クラスの passB(B) メソッドの6行目が該当しているため, そこまで実行が進んだ状態で一時停止しています.

@@ -92,53 +92,59 @@

+ 再びデバッグアイコンをクリックしてデバッグ実行し, D.java の6行目で一時停止している状態にしてください.
デバッグ実行中の状態で, 右下のブレークポイントビューの「再開」アイコンをクリックすると, 有効なブレークポイントが入っている行のうち,
現在の実行時点よりも後で最初に遭遇するブレークポイントにまで実行が進み, そこで実行が再び一時停止します.
もし, 該当するブレークポイントがなかった場合は, そのままデバッグ実行が終了します.
- この画像の場合では, E クラスの setC(C) メソッドの7行目が該当しているため, そこまで実行が進んだ状態で一時停止します.
+ ここでは, E クラスの setC(C) メソッドの7行目が該当しているため, そこまで実行が進んだ状態で一時停止します.

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

+ いったん左上の呼び出しスタックビュー上で呼び出し先である「D.passB(B) 行: 6」を選択し, エディタ上で D.java が開いている状態にしてください.
トレースデバッガでは, トレースファイルに記録されたステートメント単位の実行時情報を元に, 実行を少しずつ進めていくことができます.
ここで, このステートメント単位は行単位よりも細かい粒度になっていることに注意してください.
右下のブレークポイントビューの「ステップオーバー」アイコンをクリックすると, 実行を行単位で進めます.
なお, 呼び出し先のメソッドがあったとしても, その呼び出し先のメソッドに入ることはありません.
- この画像の場合では, ステップオーバーによって, D クラスの passB(B) メソッドの6行目から7行目へと実行が進んでいます.
+ ここでは, ステップオーバーによって, D クラスの passB(B) メソッドの6行目から7行目へと実行を進めます.

右下のブレークポイントビューの「ステップイン」アイコンをクリックすると, 実行をステートメント単位で進め,
呼び出し先のメソッドがある場合はその呼び出し先のメソッドに入ります.
- この画像の場合では, ステップインによって, 呼び出し先である B クラスの getC() メソッドへ入っています.
+ ここでは, ステップインによって, 呼び出し先である B クラスの getC() メソッドへ入っていきます.

右下のブレークポイントビューの「ステップリターン」アイコンをクリックすると, 呼び出し元のメソッドに復帰するまで実行を進めたうえで,
その呼び出し元のメソッド内で次のステートメントにまで進めます.
- この画像の場合では, ステップリターンによって, 呼び出し元のメソッドである D クラスの passB(B) メソッドに復帰し,
- 呼び出し元では B.getC() の次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行が進んでいます.
+ ここでは, ステップリターンによって, 呼び出し元のメソッドである D クラスの passB(B) メソッドに復帰し,
+ 呼び出し元では B.getC() の次のメソッド呼び出しステートメントである E.setC(C) の直前にまで実行を進めます.

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

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

  • メソッド呼び出しの直前 (当該メソッドのレシーバのオブジェクトと引数のオブジェクトが確認できる)
  • メソッド呼び出しの直後 (当該メソッドのレシーバのオブジェクトと戻り値のオブジェクトが確認できる)
  • + ここでは, いったんステップオーバーを1回押して, D.java の7行目で一時停止している状態にしたあと,
    + 変数ビュー上の「フィールド参照後」や「呼び出し前」を開き, それぞれに関連するオブジェクトが表示されていることを確認してください.

    diff --git a/tools/Reverse/TraceDebugger_Reverse.html b/tools/Reverse/TraceDebugger_Reverse.html index 5d5a283..a866df0 100644 --- a/tools/Reverse/TraceDebugger_Reverse.html +++ b/tools/Reverse/TraceDebugger_Reverse.html @@ -36,12 +36,12 @@

    説明

    トレースデバッガでは, 実行時のプログラム内部の情報を記録したファイルであるトレースファイルを読み込み, その読み込んだトレースを元にデバッグ実行を行うことができます.
    - 逆方向バージョンは, 先ほど操作していただいた順方向のトレースデバッガをベースに, さらに以下の機能を拡張したものになっています.
    + 逆方向バージョンは, 先ほど操作していただいた順方向のトレースデバッガに, さらに以下の機能を追加したものです.


    @@ -63,11 +63,12 @@

    - 順方向トレースデバッガのときと同様に, トレースファイル(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行目で一時停止している状態にしてください.
    このデバッガには, 「再開」を逆向きに行う機能があります.
    ブレークポイントビューの「逆向きに再開」アイコンをクリックすると, 有効なブレークポイントが入っている行のうち,
    - 現在の実行時点から実行を巻き戻して最初に遭遇するブレークポイントまで実行が進み, そこで実行が再び一時停止します.
    + 現在の実行時点から実行を巻き戻して最初に遭遇する行まで実行が進み, そこで実行が再び一時停止します.
    もし, 該当するブレークポイントがなかった場合は, そのままデバッグ実行が終了します.
    ここでは, E.java の7行目で一時停止している状態から「逆向きに再開」アイコンをクリックしてください.
    そうすると, D.java の6行目にまで実行が巻き戻されて再び一時停止します.
    @@ -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行目で実行が一時停止している状態にしてください.
    実行時点の登録ビューでは, 任意のタイミングで現在の実行時点を登録することができます.
    - 現在の実行時点を登録するには, ビュー上にある追加ボタンをクリックしてください.
    + ここでは, 現在の実行時点を登録するに, ビュー上にある追加ボタンをクリックしてください.
    登録された実行時点はビュー上に一覧で表示されます.

    @@ -119,12 +113,18 @@ また, 登録した実行時点へはいつでもジャンプすることができます
    ビュー上に登録されている実行時点をクリックすると, その登録した場所に対応するソースコードがエディタ上で開きます.
    また, ダブルクリックで選択するか, 選択した状態でジャンプボタンをクリックすると, 選んだ実行時点へと現在の実行時点が移ります.
    + ここでは, まずステップリターンを2回押して A.java の10行目で実行が一時停止している状態にしてください.
    + そのあと, ビュー上に登録されている実行時点をダブルクリックで選択するか, 選択した状態でジャンプボタンをクリックして,
    + 実際に先ほど登録した B クラスの getC() メソッドの6行目に実際にジャンプすることを確認してください.

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