如何获取pyclewn以获取我的gdb版本?

[mehoggan@localhost emulator]$ pyclewn
gdb  CRITICAL response to "show version":
***START***
=thread-group-added,id="i1"
~"GNU gdb (GDB) Fedora (7.6-32.fc19)\n"
~"Copyright (C) 2013 Free Software Foundation, Inc.\n"
~"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.  Type \"show copying\"\nand \"show warranty\" for details.\n"
~"This GDB was configured as \"x86_64-redhat-linux-gnu\".\nFor bug reporting instructions, please see:\n"
~"<http://www.gnu.org/software/gdb/bugs/>.\n"
***END***


vim  CRITICAL
Exception in pyclewn:

<class 'clewn.ClewnError'>
"cannot find the gdb version"
source line: "raise ClewnError('cannot find the gdb version')"
at /usr/lib64/python2.7/site-packages/clewn/gdb.py:340

pyclewn aborting...


[mehoggan@localhost emulator]$ gdb --version
GNU gdb (GDB) Fedora (7.6-32.fc19)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.

最佳答案

我在Red Hat盒子上遇到了同样的问题。我通过转到引用的文件和行号/usr/lib64/python2.7/site-packages/clewn/gdb.py:340并进行以下修复来解决此问题:

从第328行开始:

            version = ''.join(takewhile(lambda x: x.isdigit() or x == '.',
            version[1]))


并将其更改为:

            version = ''.join(takewhile(lambda x: x.isdigit() or x == '.',
            version[1][1:]))


问题是它如何处理版本字符串中的第一个'('字符:

[root@localhost ~ 03:52 PM] $ gdb -v

GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-42.el5)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.


它仅使用此输出的第一行:

GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-42.el5)


通过在[1:]之后添加version[1],我告诉脚本无条件跳过第一个字符,这在我的机器上是需要发生的。这可能不是一个长期解决方案,但它使我的pyclewn正常工作=)

10-06 06:49