2009年2月19日木曜日

emacs の gdb-mode でソース追従ができなくなっていた



手元の環境は 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 件のコメント:

コメントを投稿