Linux wireshark Core在加载期间转储

Linux wireshark Core在加载期间转储,linux,plugins,open-source,wireshark,wireshark-dissector,Linux,Plugins,Open Source,Wireshark,Wireshark Dissector,我有一个wireshark解析器插件。 我还从apt get安装了wireshark wireshark可以在插件未插入正确位置的情况下正常加载。 当我包含plugin.so文件并尝试运行wireshark时,会出现以下错误: $ wireshark 08:23:45 Err register_subtree_array: subtree item type (ett_...) not -1 ! This is a development error: Either the

我有一个wireshark解析器插件。 我还从apt get安装了wireshark

wireshark可以在插件未插入正确位置的情况下正常加载。 当我包含plugin.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,否则你可能不知道两者是否兼容。如果你只在插入插件时得到一个内核转储,这就强烈地表明这两者可能不兼容

寄存器\子树\数组:子树项类型(ett \…)不是-1

我的插件中有3个文件调用了API,我检查了每个地方提供给API的ett[]的值。它们都初始化为-1


您指的是哪种API?您不能对任何特定的
ett
数组多次调用
register\u subtree\u array();如果您调用它两次,第一次调用将导致数组中的
ett\ucode>值设置为不同于-1的值,因此下一次调用将失败,并出现该错误。

请参阅中的我的评论:无论如何,您现在已在ask.wireshark.org中发布了一个问题。我建议在该站点继续此对话,因为这是您最有可能获得最佳帮助的地方。这两个环境的wireshark版本完全相同。此外,如果不匹配,我会得到一个构建错误/未定义的符号。我通常在stackoverflow得到更快、更聪明的回答。这就是我喜欢在这里添加这个问题的原因。我同意willyo的观点:如果你看到别人编译的程序和你编译的插件之间存在无法解释的不兼容,你也应该尝试自己编译这个程序。