問題タブ [gud]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emacs - Emacs/GDB: gdb-many-windows を使用して常に特定のウィンドウにソースを表示する
Emacs 24 で GDB を にgdb-many-windows設定して使用tします。通常は独自のフレームで使用します。私は別の編集フレームを持っているのが好きです。次のようになります (粗雑な ASCII ダイアグラムで申し訳ありません)。
これは、1 つの大きな問題を除けば、非常にうまく機能します。gdb が別のソース バッファを表示する必要がある場合 (たとえば、アップ/ダウン/ステップの後)、常に「ソース」ウィンドウに表示されるとは限りません。たとえば、別のフレームのウィンドウで同じバッファーを開いている場合、gdb フレームでキーボード フォーカスを維持しながら、そのフレームが発生します。これは、フレームが互いに重なっている単一モニターのセットアップでは非常に厄介です。
同じソース バッファが別の場所に表示されているかどうかに関係なく、gdb-many-windows セットアップでソース ウィンドウを常に使用してソースを表示するようにします。どうやってやるの?
編集:再現するためのより詳細な手順。GDB 7.5-ubuntu で Emacs 24.2.1 を使用しています。この問題は、Ubuntu 10.04 と Linux Mint Nadia と Cinnamon で見られました。
- この式を評価します。
(setq gdb-many-windows t) - 少なくとも 2 つのファイルで C プログラムをコンパイルします。
例えば:
- メインフレームにbar.cを表示させます。で新しいフレームを開き
M-x 5 2ます。そのフレームで、gdb を で開始しM-x gdbます。上記のように、そのフレームには 6 つのウィンドウがあるはずです。ソース フレームの上に gdb フレームを配置します。 - にブレークポイントを設定し、との
main呼び出しをステップ実行します。が呼び出されると、bar.c が既にそこに表示されているため、メイン フレームが gdb フレームの上に持ち上げられますが、キーボード フォーカスは gdb フレームにとどまります。foobarbar
gdb-display-source-buffer問題の関数はgud.el.gzにあると思います。これを でオーバーライドしようと計画していますdefadviceが、アドバイスに詳しくありません。私がそれを理解したら、私はここに答えを投稿します。
emacs - ECB に GUD バッファをコンパイル バッファとして扱わせるにはどうすればよいですか?
私はそのようにそれをやろうとしました:

しかし、それは機能していないようです。私が間違ったことをしましたか?
python - コードに明示的なブレークポイントを指定せずに、emacs の gud で ipdb を使用する
私は python.el を使用しています。メニューから「デバッガー」を選択し、「python -m pdb myfile.py」と入力すると、gud が起動し、分割フレームに (Pdb) プロンプトが表示されます。もう一方のコードは、最初の行にキャレットを付けて、準備ができていることを示します。たとえば、「n」ステップで次の行に進み、それに応じてキャレットが移動します。
代わりに「python -m ipdb myfile.py」と入力すると、フレームが分割され、1 つの分割に「gud」というラベルが付けられますが、ipdb コンソールは明らかではありません。つまり、この ipdb の開始方法は機能していないようです。ipdb.set_trace() を使用して手動で Python コードにブレークポイントを挿入すると、ipdb は問題なく動作しますが、gud インターフェイスは使用しません。これは、ipdb のスタック トレースが適切に機能するようにするための意図的なものですか?
もしそうならそれでいいのですが、set_trace() コマンドを手動で追加せずに emacs から ipdb を開始する方法はありますか?
emacs - プログラムで Emacs ウィンドウを入力フォーカスとして設定する
プログラムで Emacs X Window に現在のユーザー入力フォーカスを取得させるにはどうすればよいですか?
これを次の Bash スクリプトで使用したい
Emacs ウィンドウが自動的にウィンドウ フォーカスを取得するようにします。
debugging - Emacs の GDB の `info args`
Emacs の GDB 統合には、ほとんどの結果を示すLocals Buffer(gdb) info localsがあります。現在のフレームの結果も表示する方法はあります(gdb) info argsか (別のフレームが選択されるたびに手動で入力する必要はありません)。
python - emacs 内の gdb: python コマンド (py および pi)
gdb を使用して C++ プログラムをデバッグしたいと考えています。piおよびコマンドを使用して、pygdb 内から python コマンドを評価します。これは、コマンド ラインから gdb を呼び出すと正常に機能します。ただし、を使用して emacs 内から gdb を呼び出すM-x gdbとgdb -i=mi file_name、次のエラーが発生します。
- コマンドは
piインタラクティブな python シェルを正しく開きますが、このシェルに入力すると次のようなエラーが発生します。
ファイル "stdin"、1 行
目 -interpreter-exec console "2" SyntaxError
: 無効な構文
- コマンドは単一の
pyコマンド ( などpy print 2+2) に対しては正しく機能しますが、複数のコマンドに対しては機能しません
gdb を で開始することでこれらの問題を回避できますがgud-gdb、gdb-many-windows. たぶん、問題は入力後のプロンプトによって引き起こされますがpi、これはもはや(gdb)代わりではありません>>>か?
gdb - gdb Python API:例外が消えますか?
特定の場所で、gdb 内の Python コードが例外を適切に処理しない理由を知っている人はいますか? または、明確にするために、おそらく例外メッセージは *gud バッファー以外の場所に送信されます。期待どおり、gdb がプロンプトに制御を戻していません。
(私はEmacs(24.5.1)gudモードでGNU gdb(GDB)7.11.50.20160212-gitを使用しています)
例えば:
「SomeEvent」が処理されると、「__call__」が悪いコードまで実行され、戻り、通常の操作が続行されます(私が観察できるように)。
サブクラス化された gdb.Breakpoint の Stop() など、他の「コールバック」タイプのメソッドでこの動作に気付きました。