wireshark lua debug.getinfo为nil

问题描述 投票:0回答:1

我目前正在为Lua的Wireshark写一些解剖器。 Lua代码已经变得很大。因此,我将其拆分为多个文件(模块)。我工作了。顺便说一下,我的目标是用户只需要将文件复制到plugins目录中,以便在每次启动Wireshark时自动加载解剖器。

现在,要从“主文件”中访问其他文件,我需要这样做:

package.prepend_path(".\plugins\3.3\modulesDir") local mymodule= require "module"

这很好,但是有一些缺点。最重要的是,如果用户使用其他版本的Wireshark,则需要更改Lua代码中的路径。如果是其他目录(Linuy,Ma​​c OS),则相同。

为了解决这个问题,我对如何获取当前Lua文件的路径进行了一些研究,并提出了这个建议:

local moduleDir = debug.getinfo(2, "S").source:sub(2) moduleDir = moduleDir:match("(.*[/\\])")

该平台独立运行,因此它似乎是我想要的理想解决方案。如果我使用Wireshark>“工具”>“ Lua”>“评估”执行此操作,则可以正常工作。但是:如果我在Lua文件(这是我的解剖器)中执行此操作,则会收到错误“试图索引nil值”。我尝试了此行的各种不同版本,但始终似乎调试表为nil。我正在使用Wireshark版本3.3。

有人知道如何运行它吗?还是获取Lua文件所在目录的另一种方法?预先感谢。

lua wireshark wireshark-dissector
1个回答
0
投票

如果要查找“全局配置目录”,则可以使用Dir.global_config_path()Here您拥有init.lua在此路径中,并且here lua函数详细说明。

© www.soinside.com 2019 - 2024. All rights reserved.