在c中调试巨大的树木

时间:2012-01-29 12:22:43

标签: c

我有一个管理大树的C应用程序,因为它几乎不适合内存。该应用程序目前没有图形用户界面。我想调试那些树,例如以某种方式穿越它们。我需要每个节点一些文本信息,比如说20个字符。内存中的树不包含额外的调试信息,因此需要在遍历时生成。我不需要任何花哨的浏览/搜索,只需要处理分层数据的一般方法。

我想知道如何用尽力而为

来做到这一点
  • 将数据转储到某种格式的文件中,并使用某些程序显示,可以处理如此多的数据。
    • 沿着这条路线,我想通过创建目录结构来滥用文件系统,但这不会扩展
  • 为C使用GUI库(GTK?)
    • 需要支持延迟评估
    • 如果它有用,我也可以使用C ++ GUI库

这真的是最少的努力,它只是用于调试,而不是一个持久的解决方案。 我并不仅限于特定的系统或库(可以是Linux或Windows)。

2 个答案:

答案 0 :(得分:2)

倾倒数据似乎是最好的。您可以尝试使用graphvizgnuplotxy-pic等软件包来制作图表。

否则,您可能会发现ddd有用,它可以显示图形。但如果内存不足,那可能不太适合。

答案 1 :(得分:0)

这里是一个需要很少额外内存的方法的大纲(因为它不会重建整个树),支持浏览树,并且似乎可以快速组合(免责声明:我还没有尝试过) ):

使用您喜欢的脚本语言编写一个CGI程序,该程序将地址列表(或只是与树结构顶部对应的符号)作为输入。然后,该脚本开始gdb进程并将其附加到包含树的进程。使用提供的地址列表,它遍历树,构建一个html表示,使用gdb在每个停靠点调用describe_this_node()函数。在每个节点,包括一个再次调用相同CGI程序的链接,提供该节点的路径作为输入。在最底部显示的节点中,提供子节点的链接。

我意识到这种方法可能只是复制了图形化调试器(如ddd)中的功能,但目的是提供一种极简主义的方法,只需要很少的额外内存。