gpt4 book ai didi

c++ - 在回溯中格式化 GDB 模板参数

转载 作者:行者123 更新时间:2023-11-28 05:46:48 34 4
gpt4 key购买 nike

当我在 GDB 中使用 C++ 模板库(通过终端)时,我试图找到一种在例如查看回溯时漂亮地打印模板参数的方法。

例如,我在视觉上尝试在 GDB 中打印的此框架中找到第二个(最外层的)模板参数,如下所示:

(gdb) f
#10 try_to_refine_element<CGAL::Null_mesh_visitor_level<
CGAL::Mesh_3::tets::Refine_facets_visitor<CGAL::Regular_triangulation_3
<CGAL::Robust_weighted_circumcenter_filtered_traits_3<... (+10397 char)

Gist

这些不是 STL 模板,所以 STL-template-printing-tools 不适用, pretty-print 特定类型不是我的兴趣(即自定义 pretty-print ),因为我只想查看模板参数的层次结构各种各样的类/方法,而不是表示它们的内容(这些用例在 gdb docs 中解决)。 GDB 中还有一些漂亮的内置设置,但似乎没有一个会影响模板(如果我遗漏了它们,请更正!)。

有没有办法让 GDB 换行和缩进更易读,或者使用标准脚本?模板颜色编码将是一个奖励!目前,我可以剪切粘贴并运行 Python 以根据需要进行格式化,但似乎存在一个更好的、经过测试的解决方案是合理的。

虽然我确信许多可视化 IDE 也可以解决这个问题,但由于我的一般工作流程与终端中的 tmux 密切相关,因此最好能找到一个兼容的解决方案。

最佳答案

使用 frame filters ,我创建了一个 GDB Python 插件来提供这个:https://github.com/philtweir/gdb-pretty-frame-cpp

它还没有经过充分测试(并且只使用 CGAL/boost/STL/VTK),但如果有兴趣,我可以让它更聪明一些。

虽然这是一个答案,但我仍然更愿意听到任何体面的、成熟的解决方案,因为这段代码仍然非常基础。

关于c++ - 在回溯中格式化 GDB 模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36057686/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com