i4fumi's blog

オープンソースなど

cgdb 文字化け

cgdbがとても便利なのですが、 CJKが通らないのでやっつけパッチを作りました。

文字化けの原因

cgdbの構造はざっくり以下のような感じです。

tty <---> ncurses <---> cgdb <---> ptmx/pts | <---> gdb
                                            | <---> readline

原因は2つほどあり、

  • ビルド時の設定で、ワイド文字対応版でないncursesを使っている
  • cgdbがgdbから出力を読み取り、ncursesに書き込むときの処理が8-bit cleanでない

パッチ

修正前

f:id:i4fumi:20120928073504p:image

修正後

f:id:i4fumi:20120928073505p:image

ソースコードの文字化けと、 gdbのrunの結果から、マルチバイト文字が消えてしまう問題がなおってます。

ビルド

ncursesw,bison,flex,readline,help2man,texinfo などが必要なので、aptやyumであらかじめインストールしておきます。

$ git clone git://github.com/i4fumi/cgdb.git
$ cd cgdb
$ git checkout -b topic/multi-byte-character origin/topic/multi-byte-character
$ ./autogen.sh
$ ./configure --prefix=/usr/local
$ make
$ sudo make install