配置 gdb tui 对特定文件扩展名使用 c++ 风格

问题描述 投票:0回答:1

我的公司在自定义框架中使用 C++。由于某些原因,一些 C++ 代码驻留在扩展名为

.foo
的文件中。支持在这些文件上使用 gdb(我认为需要比我更聪明的人做一些工作,但它已经完成了) - 我可以使用 gdb 并且它可以很好地处理这些文件。

现在我喜欢使用gdb tui模式。我知道 tui 可以为 C++ 代码着色。事实上,在我们的项目中,只要代码位于 .h 文件中,它就会对 C++ 代码进行着色,但不会对

.foo
文件中的代码进行着色。

我如何告诉 gdb

.foo
文件是 C++ 代码并请相应地着色?

我看到了https://sourceware.org/gdb/current/onlinedocs/gdb.html/Output-Styling.html。我尝试了以下方法:

(gdb) show style sources
Source code styling is enabled.
(gdb) show style tui-current-position
Undefined show style command: "tui-current-position". Try "help show style".

我有 gdb 11.2-1

c++ gdb
1个回答
0
投票

GDB 11.2 可以在 GNU 源代码突出显示库的支持下构建。如果您(或您的团队)修改了 GDB,那么您也必须构建 GDB。如果您在构建 GDB 之前安装了 GNU Source Highlight 开发包,那么 GDB 应该会选择它。

这样做的好处是 GNU 源代码突出显示,根据调试信息中声明的语言突出显示源文件,因此您应该自动获得 C++ 样式。

如果上述不可能,那么正如 ssbssa 在评论中所说,您必须使用 Python Pygments 库进行样式设置。可以更新 Pygments,以便它知道

*.foo
文件应突出显示为 C++。

要做到这一点,你必须首先找到你的Python Pygments安装,并找到文件

pygments/lexers/c_cpp.py
,在这个文件中你会发现一些类似于这样的代码:

    filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
                 '*.cc', '*.hh', '*.cxx', '*.hxx',
                 '*.C', '*.H', '*.cp', '*.CPP']

通过在末尾添加

, '*.foo'
来更新此内容,这样您就拥有:

    filenames = ['*.cpp', '*.hpp', '*.c++', '*.h++',
                 '*.cc', '*.hh', '*.cxx', '*.hxx',
                 '*.C', '*.H', '*.cp', '*.CPP', '*.foo']

现在,在

c_cpp.py
文件旁边,您应该找到名为
_mapping.py
的文件。该文件缓存了词法分析器映射的扩展名,需要重新生成。通过运行
_mapping.py
文件来完成此操作,例如
python3 ./_mapping.py

完成后,重新启动 GDB,希望

*.foo
文件现在应该突出显示为 C++。

如果您因权限原因无法编辑词法分析器文件,请下载 Pygments 包并将其安装到您的主目录中,然后设置

PYTHONPATH
以便 GDB 在系统安装之前找到您本地安装的库,您就可以然后根据需要自由编辑本地安装。

© www.soinside.com 2019 - 2024. All rights reserved.