手元の環境は emacs 22.1.1 / gdb 6.4(改)なのですが、emacs で gdb-mode を起動してトレース実行すると今までできていたはずのソースコード上の実行位置追従が動作しないではありませんか。
訳が分からぬまま google 検索すると、まさに欲しかった情報が出てきました。
emacsかgdbがバージョンアップしたせいで、Emacsでgdbを使ったとき、うまく対応するソースコード行を追従しなくなった。この問題は検索の結果、gdbの--fullnameオプションを指定することが解決すると判る。しかし、これをコマンドファイルで指定するにはどうしたらよいだろうか?
答えは、set annotate 1とコマンドファイルに書けばよい。
http://www.gaku.net/uklog/a11513.html
(http://www.gaku.net/uklogtb?msgid=11513)
このオプションは gdb のマニュアルに以下のように説明されています。
emacs がサブプロセスとして gdb を起動するときにこのオプションをセットします。
これは、スタックフレームが表示されたときには常に(プログラムが停止した時を含む)、フルパスと行番号を標準の認識可能な書式で出力するよう、gdb に伝えるものです。
この認識可能な書式は 2 つの 32 文字の文字列と、それに続くコロンの改行でセパレートされるファイル名、行番号、文字位置のような感じです。
emacs - gdb インターフェースプログラムは、2 つの 32 文字の文字列を、ソースコードをフレームに表示するための信号として使用します。
0 件のコメント:
コメントを投稿