0

我有一个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在哪里转储核心。我找不到任何核心。对此有任何想法吗?

4

2 回答 2

0

register_subtree_array:子树项目类型(ett_...)不是-1

...

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

您指的是哪个 API?您不能多次调用register_subtree_array()任何特定数组;ett_如果您调用它两次,第一次调用将导致ett_数组中的值设置为不同于 -1 的值,因此下一次调用将因该错误而失败。

于 2013-12-03T18:48:28.370 回答
0

一般来说,如果你想在程序中插入插件,你必须确保编译插件的库 API 与程序提供的库 API 相同。

除非wireshark 在其库API 中提供文档版本控制,否则这意味着您必须针对您打算使用它的相同版本的wireshark 编译插件。所以,如果你自己编译你的wireshark或插件,你也应该编译另一个。如果您以二进制形式获取插件,您也应该从完全相同的位置获取您的wireshark,否则您可能不知道两者是否兼容。如果您在插入插件时仅获得核心转储,则强烈表明两者可能不兼容。

于 2013-12-03T16:51:00.887 回答