1

gdb を使用して C++ プログラムをデバッグしたいと考えています。piおよびコマンドを使用して、pygdb 内から python コマンドを評価します。これは、コマンド ラインから gdb を呼び出すと正常に機能します。ただし、を使用して emacs 内から gdb を呼び出すM-x gdbgdb -i=mi file_name、次のエラーが発生します。

  • コマンドはpiインタラクティブな python シェルを正しく開きますが、このシェルに入力すると次のようなエラーが発生します。

ファイル "stdin"、1 行
目 -interpreter-exec console "2" SyntaxError
: 無効な構文

  • コマンドは単一のpyコマンド ( などpy print 2+2) に対しては正しく機能しますが、複数のコマンドに対しては機能しません

gdb を で開始することでこれらの問題を回避できますがgud-gdbgdb-many-windows. たぶん、問題は入力後のプロンプトによって引き起こされますがpi、これはもはや(gdb)代わりではありません>>>か?

4

2 に答える 2

1

私は手足に出て、これはgudモードのバグだと言います. 手がかりは-interpreter-exec、エラーの行です。

ここで何が起こるかというと、gud は gdb を特別な "MI" ("Machine Interface") モードで実行します。このモードでは、コマンドとその応答は、人間ではなく機械が判読できるように設計されています。

GUI がユーザーにコンソール インターフェイスを提供できるようにするために、MI はコマンドを提供します。この-interpreter-execコマンドは、他の gdb "インタープリター" を使用してコマンドを評価します (これは、あなたが考えていることを意味するものではなく、特に Python とは何の関係もありません)。

したがって、gud はユーザー入力を gdb に送信します-interpreter-exec console ...。しかし、pythonコマンドの継続行の場合、これは正しくありません。

pythonこれを Emacs で試してみたところ、スペルアウトしたときにコマンドで機能させることができましたがpy、 、pi、およびpython-interactiveすべて失敗しました。

于 2015-07-30T16:19:51.953 に答える