我有一个管理大树的C应用程序,因为它几乎不适合内存。该应用程序目前没有图形用户界面。我想调试那些树,例如以某种方式穿越它们。我需要每个节点一些文本信息,比如说20个字符。内存中的树不包含额外的调试信息,因此需要在遍历时生成。我不需要任何花哨的浏览/搜索,只需要处理分层数据的一般方法。
我想知道如何用尽力而为:
来做到这一点这真的是最少的努力,它只是用于调试,而不是一个持久的解决方案。 我并不仅限于特定的系统或库(可以是Linux或Windows)。
答案 0 :(得分:2)
答案 1 :(得分:0)
这里是一个需要很少额外内存的方法的大纲(因为它不会重建整个树),支持浏览树,并且似乎可以快速组合(免责声明:我还没有尝试过) ):
使用您喜欢的脚本语言编写一个CGI程序,该程序将地址列表(或只是与树结构顶部对应的符号)作为输入。然后,该脚本开始gdb进程并将其附加到包含树的进程。使用提供的地址列表,它遍历树,构建一个html表示,使用gdb在每个停靠点调用describe_this_node()函数。在每个节点,包括一个再次调用相同CGI程序的链接,提供该节点的路径作为输入。在最底部显示的节点中,提供子节点的链接。
我意识到这种方法可能只是复制了图形化调试器(如ddd)中的功能,但目的是提供一种极简主义的方法,只需要很少的额外内存。