7

プログラミングの学生が式の評価がどのように行われるか (部分式がどのように評価され、その値によって "置換" されるか、Excel の式評価ビジュアライザーのようなもの) を理解するのに役立つビジュアル デバッガーを構築したいと考えています。

Python の pdb では、このプロセスをステップ実行できないようです。最も細かいステップの粒度はコード行であるためです。Pythonバイトコードをステップ実行することは何とか可能ですか? この目標を達成するための他のアイデアはありますか?

編集: CPython 標準ライブラリの上に構築できる軽量のソリューションが必要です。

4

4 に答える 4

2

あなたはpudbを試しましたか? http://pypi.python.org/pypi/pudb Debian ライクの場合: apt-get install python-pudb

pdb にアタッチするので、これはあなたが探しているものではないと思います。少なくとも、関数にステップインすると、どの関数にいるのかが明確に表示されます。

学生を教えるために、あなたができること:

  • まず、変数を使用してプログラムを作成し、いくつかの手順を使用して構成し、
  • まともなpythonデバッガ(pdb、winpdb、pudb ...)を使用してこのプログラムをデバッグし、
  • 次に、プロセスが十分に理解されたら、最終的なコードに到達するまで、コードをより少ない行に徐々に結合することにより、一時変数を取り除きます。

完璧にはほど遠いことはわかっていますが、現時点ではこれが私が考えることができる最高のものです.

于 2012-12-21T11:22:34.330 に答える
1

私自身も解決策のアイデアを持っています。すべての(サブ)式をダミーのメソッド呼び出しでラップすることでコード(またはAST)をインストルメント化できます。これは、引数を返すだけです。例えば。

x = f(sin(x + y))

になります

x = dummy(f(dummy(sin(dummy(dummy(x) + dummy(y))))))

このようにして、各部分式が評価され、値も取得された後に通知されることが保証されます。式のどの部分が現在処理されているかについて、場所/AST情報を追加することもできます。例:

... dummy(x, line=23, col=13, length=1) ...

残念ながら、これにはASTとコンパイルをいじる必要があります...

于 2012-12-21T10:05:19.737 に答える
1

pdbを使用すると、任意の関数呼び出しにステップインできます。その他のステートメントの場合、pdbはその行に関連する名前の値を出力できます。カバーされていない、探している追加機能は何ですか?

リスト内包表記のようなものに「ステップイン」しようとしている場合、それは単一のオペコードであるため、純粋なPythonの観点からは機能しません。ある時点で、すべての式について、生徒に「これがPythonがC実装に入り、これを評価する場所です...」と伝える必要があります。

于 2012-12-19T21:38:50.343 に答える
1

reinteractをチェックアウトする必要があります。これは非常にシンプルで、それに貢献できます

于 2012-12-19T21:51:20.600 に答える