gdb-many-windows
をEmacs 24で使用し、通常はそれ自身のフレームで設定します。別の編集フレームが好きです。これは次のようになります(ASCII ASCIIダイアグラムのお詫び):Emacs/GDB:gdb-many-windowsで特定のウィンドウに常にソースを表示します。
+-------------+-------------+
| gdb | locals |
+-------------+-------------+
| source | I/O |
| | |
+-------------+-------------+
| stack | breakpoints |
+-------------+-------------+
これは1つの大きな問題を除いて非常にうまくいきます。 gdbが、例えばup/down/stepの後に、別のソースバッファを表示する必要があるときは、常に、それが「ソース」ウィンドウに表示されるとは限りません。たとえば、別のフレームのウィンドウで同じバッファを開いている場合、gdbフレームにキーボードのフォーカスを合わせながらそのフレームを上げます。これは、フレームがお互いをカバーしているときに、が実際には厄介なです。
同じソースバッファが別の場所に表示されていても、ソースを表示するにはgdb-many-windowsセットアップでソースウィンドウを常に使用します。どうやってやるの?
EDIT:より詳細な指示が再現します。 Emacs 24.2.1とGDB 7.5-ubuntuを使用しています。私はこの問題をCinnamonのUbuntu 10.04とLinux Mint Nadiaで見たことがあります。
- は、この式を評価:
(setq gdb-many-windows t)
- は、少なくとも二つのファイルとCプログラムをコンパイルします。たとえば、
:
// foo.c
void bar(int);
void foo(int c) {
if (c > 0)
bar(c - 1);
}
int main(void) {
foo(100);
return 0;
}
// bar.c
void foo(int c);
void bar(int c) {
if (c > 0)
foo(c - 2);
}
// compile with gcc -g -O0 foo.c bar.c -o test
- bar.cには、メインフレームに表示されてみましょう。
M-x 5 2
で新しいフレームを開きます。そのフレームで、M-x gdb
でgdbを起動します。上記のように、そのフレームには6つのウィンドウが必要です。ソースフレームの上にgdbフレームを配置します。 main
にブレークポイントを設定し、foo
とbar
を呼び出します。bar
が呼び出されると、メインフレームはbar.cがすでにそこに表示されているのでgdbフレーム上に持ち上げられますが、キーボードフォーカスはgdbフレームに残ります。
gud.el.gzの問題機能はgdb-display-source-buffer
だと思います。私はdefadvice
でこれを上書きしようと考えていますが、私は実際にアドバイスに精通していません。もし私がそれを理解すれば、私はここに答えを掲示するでしょう。
問題を再現できません。 –
@Jay Conrod:まだこの問題があるかどうか教えてください。もしそうなら、Emacsとgdbのフルバージョン番号を教えてください。さらに、 'emacs -q'を試して、あなたの設定の潜在的な問題を検出してください。また、最小限の例を提供してください。つまり、問題を再現するための小さなソースファイルとステップバイステップの指示です。 – Tobias
@Tobias、再現するための詳細な説明が追加されました。私が何かを明確にすることができるかどうか私に教えてください。 Debianのemacs 24.4.1で –