ブレークポイントを設定し、コードを変更してから、新しく変更したコードを実行できるデバッガーまたはプログラミング言語を知っている人はいますか。
これは、デバッガーに逆デバッグ機能もある場合にさらに役立ちます。したがって、バグのあるコードをステップ実行し、逆方向にスタックしてコードを修正してから、もう一度ステップ実行して、バグが修正されたかどうかを確認できます。今それはセクシーです、誰かがこれをしていますか?
ブレークポイントを設定し、コードを変更してから、新しく変更したコードを実行できるデバッガーまたはプログラミング言語を知っている人はいますか。
これは、デバッガーに逆デバッグ機能もある場合にさらに役立ちます。したがって、バグのあるコードをステップ実行し、逆方向にスタックしてコードを修正してから、もう一度ステップ実行して、バグが修正されたかどうかを確認できます。今それはセクシーです、誰かがこれをしていますか?
totalviewデバッガーは、ユーザーが「コードをその場で修正」したり、「パッチを適用」したり、再コンパイルせずにシナリオを調べたりできる評価ポイントの概念を提供します。
基本的に、ユーザーは評価ポイントをある行に配置し、代わりに実行したいC /C++またはFortranコードを記述します。単純な、、printf
一連goto
のif
---then
テストelse
、いくつかのfor
ループなどである可能性があります...これは本当に強力で時間の節約になります。
逆デバッグに関しては、これは非常に望ましい機能ですが、すでに存在するかどうかはわかりません。
編集、2015年: 私の修士論文の第 1 章と第 2 章を読んでください。コンピューター プログラミングにおける視覚的思考に向けてリバース デバッグとライブ プログラミングを組み合わせて、質問に詳細に答えています。
Python デバッガー Pdb を使用すると、一時停止中 (ブレークポイントなど) に任意のコードを実行できます。たとえば、変数がプログラム自体で宣言されていない、デバッグ中にプログラムの次の行で一時停止したとします。
print (x)
そのため、先に進む (つまり、その行を実行する) と、次のようになります。
NameError: name 'x' is not defined
デバッガーでその変数を定義し、プログラムを実行し続けることができます。
(Pdb) 'x' in locals()
False
(Pdb) x = 1
(Pdb) 'x' in locals()
True
デバッガ コンソールで変更を提供するのではなく、一部のエディタで元のコードを変更したい場合は、実行中のプログラムが反映されるように、デバッガに何らかの方法でライブ プログラムの状態を自動的に更新させます。その変更、それは「ライブプログラミング」と呼ばれます。(コーディングのライブ パフォーマンスである「ライブ コーディング」と混同しないでください。多少の混乱はありますが、 TOPLAPを参照してください。) ここ 2、3 年間、ライブ プログラミング (およびライブ コーディング) の研究に関心がありました。年。これは解決するのが非常に難しい問題であり、さまざまなアプローチがあります。Bret Victor のトーク、 Inventing on Principleを見ることができます。、そのいくつかの例について。これらはアイデアを説明するためのプロトタイプにすぎないことに注意してください。一部の draw() 関数の次のループでツリーが別の方法で描画されるようにするため、またはゲーム キャラクターが次回別の方法で応答するようにするため (または、ライブ コーディング セッション中に音楽やビジュアルが変更されるようにするため) に、コードのホット スワップを行います。 、それほど難しくありません。一部の言語とシステムは、明示的に対応しています。ただし、プログラムの状態は必ずしもコードの真の反映であるとは限りません (上記の Pdb の例のように)。たとえば、ゲーム キャラクターがジャンプなどの何らかの能力に基づいて領域にアクセスでき、コードがスワップされた場合。ゲームが最初からプレイされた場合、彼はゲーム内のそのエリアにアクセスできなくなる可能性があります. 一般的なプログラミングで変更の伝播を解決するのは困難です。彼の検索例では、変更が行われるたびに最初からコードが再実行されていることがわかります。
真逆の実行もトリッキーな問題です。多くの商用プロジェクトがありますが、ほとんどすべてのプロジェクトはトレース データを記録して後で参照するだけで、全知デバッグと呼ばれます (ただし、リバース デバッガー、バックインタイム デバッガー、双方向デバッガー、またはタイム トラベル デバッガーとも呼ばれます)。多くの混乱)。フリーでオープンソースのプロジェクトに関して言えば、GNU デバッガーgdbには 2 つのモードがあります。これにより、ライブ プログラムでリバースすることができます。一度に 1 つのマシン命令を元に戻すため、非常に低速です。拡張された python デバッガー プロトタイプである epdb も、ライブ プログラムで真のリバースを可能にし、スナップショット/チェックポイントおよび再生メカニズムを使用するため、はるかに高速です。ここに論文があり、ここにプログラムとコードがあります。