回答:
Eclipseのdrop to frameコマンドを使用して、現在のメソッドを上から再入力できます。ただし、発生した状態の変化は展開されないため、現在のメソッドの種類によっては機能しない場合があります。
実際に時間を遡って進むことができるもう1つの本当にクールなツールは、Omniscient Debuggerです。クラスローダーにロードされるときにクラスをインストルメント化することで機能するため、コードが実行するすべてのことを記録できます。「いつ、どこで、なぜこのフィールドに現在の値が割り当てられたのか」などの非常に優れた機能を実行できます。UIはかなり不格好で、大きなコードベースを処理するのに苦労する場合がありますが、場合によっては、かなりの時間を節約できます。
更新:Chrononは、「DVR for Java」と呼ばれる商用製品を提供します。これは、ODBと同じことをたくさん行うようです。
以前の回答で言及されたものを超えて-つまり、スタックビューでデバッグを再起動するEclipseのフレームへのドロップ機能(グローバル/静的データを元に戻さない)と、少し生であまり多くないOmniscientデバッガ進化-(実行)時間に「戻る」ために使用できるEclipseベースのツールがいくつかあります。
JIVEはEclipse Javaデバッガーを拡張して、プログラムの状態を記録する機能を備えています。JIVEパースペクティブは、プログラムの実行中に更新されるいくつかの有用なUMLダイアグラムを提供します。これらの図は、アプリケーションの状態(オブジェクト図)とスタックトレース(シーケンス図)の概要を提供します。記憶されたトレースをクエリして、時間を前後に進み、対応する図を表示できます。
Diverはメソッド呼び出しのみを記録し、JIVEのようなプログラムの状態は実際には記録しません。すべてのメソッド呼び出しイベントは、後で取得して分析できるように保存されます。主にフィルターを指定するために、Javaの実行およびデバッグ構成を拡張します。トレースは、実行時に一時停止/再開/フィルタリングできます。記録されると、Diverパースペクティブはそれをインタラクティブなシーケンス図に表示できます。
JIVEとDiverは、学術研究から発行されたオープンソースプロジェクトです。2012年11月現在、両方のプロジェクトがアクティブです。
Chrononは商用製品ですが、学生とオープンソースプロジェクトの無料ライセンスがあります。彼らのウェブサイトで主張されているものから、記録された履歴を再生し、前後に進み、時間旅行デバッグを可能にするので、それはおそらく最も包括的なレコーダーでしょう。また、Eclipseは録音には必要ありません。
これらのプラグインはすべてリソースが非常に貪欲なので、優れたスペックのマシンを用意し、そのフィルター機能を使用するのが最善です。それらを正常に実行するための明確な要件は、eclipse.iniのヒープ領域を拡張することです。
私の場合、私はJIVEとDiverを使用してXML解析プログラムをデバッグしようとしましたが、リソース不足のため常にEclipseがフリーズしていました。ダイバーはLinux 64ビットで実行するのが難しいかもしれません、それはこれらのヒントを使用してubuntu 32ビットおよびおそらく他の32ビットディストリビューションで動作します。DiverはWindowsで動作しますが、Windows 64ビット+ 64ビットJVMで動作します。それ以外の場合、32ビットウィンドウでの最大ヒープ領域は1.3〜1.6 GBに制限されます。JIVEは私のLinux 64ビットでうまく動作し、他のプラットフォームでも問題なく動作するようです。
はい、Eclipse CDTは履歴デバッガー機能をサポートしています。
デバッグ構成 -> デバッガ -> 起動時にリバースデバッグを有効にするを開きます。
を押すよりも、shift+F5
またはshift+F6
ステップバックのように、F5
またはF6
ステップフォワードのことができます。
私は偏見がありますが、クロノンはまさにあなたが探していることをします。
Drop to Frameは、メソッドがヒープ上の何かを変更した場合、元に戻されないため、正確にステップバックしません。
私は日食でもこの機能を探していました。ビジュアルスタジオでできることは知っています。実際には、現在の行マーカーをドラッグして、コードのどこにでもドロップできます。変数の変更を元に戻すことができるかどうかは、私にはよくわかりません。しかし、それでもそれでも非常に便利で、多くの時間を節約できます。私はこれを非常に長い日食で待っていました。
質問はEclipse言語を指定しておらず、回答の多くはJavaを想定しています。
GDBデバッガーでC ++およびGCCを使用する場合、EclipseはRun->Move to Line
Visual StudioのSet Next Statementのように機能し、機能します。この場合、EclipseはGDBにある機能を使用しています。
Javaを使用している場合、EclipseやNetbeansでJavaを使用する方法はわかりませんが、他の回答ではプラグインが提案されています。Eclipseには、私のバージョン(Juno SR1)のJavaで機能する「フレームにドロップ」コマンドがあります。デバッグモードで関数内のコードを変更して保存すると、実行行が自動的に現在の関数の先頭に移動し、そこから続行できます。行を指定するのと同じではありませんが、それは何かです。