如何让 gud gdb 正确处理中文路径名?

最近用 gud gdb 调试经常遇到一个奇怪的问题,每次加一个断点,都会 list 一次,而且有几个断点就 list 几次,导致根本没法用 gdb 调试。但在 emacs 之外用 gdb 调试是没有问题的。

今天下决心解决这个问题,花了几个小时追踪代码没有什么收获,后来无意间注意到这个路径名不对啊……

心想不好。然后发现果然有这个 buffer……

我佛了……一开始以为配置出问题了,或者是 .gdbinit 写错了(因为之前没碰到过这个问题,后来莫名其妙地出来了),然后发现是路径名的问题……

那么问题来了,如何让 gud gdb 不要这么愚蠢……我是真没想到 Linux 下还能遇到这类问题 = =

感觉像是 gud 的 bug 啊。gdb mi 返回的就是这个结果,但愚蠢的 gud 根本没有转换回去。

=breakpoint-created,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="0x00000000000005a0",func="main()",file="code.cpp",fullname="/home/ksqsf/\346\210\221\347\232\204\345\235\232\346\236\234\344\272\221/\350\257\276\347\250\213/\347\256\227\346\263\225\345\237\272\347\241\200/Lab4/code.cpp",line="8",thread-groups=["i1"],times="0",original-location="main"}

edit:或者说,是转错了。。。

gdb-mi-decode-strings

Reference: debbugs.gnu.org/cgi/bugreport.cgi?bug=33548