我有一个wireshark解析器插件。 我还从 apt-get 安装了wireshark。
wireshark 加载正常,无需将插件插入正确的位置。 当我包含插件 .so 文件并尝试运行wireshark时,出现以下错误:
$ wireshark
08:23:45 Err register_subtree_array: subtree item type (ett_...) not -1 ! This is a development error: Either the subtree item type has already been assigned or was not initialized to -1.
Trace/breakpoint trap (core dumped)
我尝试理解这个问题。它说子树已经被分配(我假设分配了一个 ett 值)或者没有用 -1 初始化。我的插件中有 3 个文件,其中调用了 API,我检查了每个地方提供给 API 的 ett[] 值。它们都初始化为-1。
陷入了障碍。任何建议都会有帮助。
另外,我不明白wireshark将核心转储到哪里。我找不到任何核心。 对此有什么想法吗?
最佳答案
通常,如果您想将插件插入到程序中,则必须确保编译插件所针对的库 API 与程序提供的库 API 相同。
除非wireshark在其库API中提供了记录的版本控制,否则这意味着您必须针对您打算使用的wireshark版本来编译该插件。因此,如果您自己编译wireshark或插件,则也应该编译另一个。如果您以二进制形式获取插件,则应该从完全相同的位置获取wireshark,否则您可能不知道两者是否兼容。如果您在插入插件时只得到核心转储,则强烈表明两者可能不兼容。
关于linux - 加载期间的wireshark核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356694/