我有一个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在哪里转储核心。我找不到任何核心。 有什么想法吗?
答案 0 :(得分:0)
通常,如果要将插件插入到程序中,则必须确保编译插件的库API与程序提供的库API相同。
除非wireshark在其库API中提供文档版本控制,否则这意味着您必须根据您打算使用的相同版本的wireshark编译该插件。所以,如果你自己编译wireshark或插件,你也应该编译另一个。如果你以二进制形式获得你的插件,你应该从完全相同的地方获得你的wireshark,否则你可能不知道这两者是否兼容。如果您在插入插件时只获得核心转储,则表明这两者可能不兼容。
答案 1 :(得分:0)
register_subtree_array:子树项类型(ett _...)不是-1
...
我的插件中有3个文件,其中调用了API,我检查了在每个这些位置提供给API的ett []的值。它们都被初始化为-1。
您指的是哪种API?您不得多次在任何特定register_subtree_array()
数组上调用ett_
;如果您正在调用它两次,则第一次调用将导致数组中的ett_
值设置为不同于-1的值,因此下一次调用将失败并显示该错误。