小编piy*_*iyo的帖子

如何改进创建基于Lua的Wireshark解剖器的工作流程

我终于在Lua for Wireshark为我的UDP协议创建了一个Dissector,但是工作流程非常糟糕.它包括在我的编辑器中编辑我的自定义Lua文件,然后双击我的示例捕获文件以启动Wireshark以查看更改.如果出现错误,Wireshark会通过对话框或树分析子窗格中的红线通知我.然后我重新编辑我的自定义Lua文件,然后关闭该Wireshark实例,然后再次双击我的示例捕获文件.这就像编译C文件一样只能看到一个编译器错误.

是否有更好(更快)的方式来查看我的更改,而无需一直重启Wireshark?

当时,我在启用了Lua的情况下使用Wireshark 1.2.9 for Windows.

workflow lua restart wireshark read-eval-print-loop

11
推荐指数
2
解决办法
4099
查看次数

使用堆栈将成员变量重置为其原始值的一般方法?

我遇到了一个类实例函数,它需要临时更改一个类实例变量,然后在函数完成时恢复它.该函数在整个地方都有返回语句,并且在每次返回之前都有一个恢复语句.这对我来说似乎很混乱,更不用说在抛出异常时会感到害怕.

作为一种改进,我使用内部类定义提出了这种泛化.这是一个示例驱动程序(类恢复程序).

class Unwind {
private:
  bool b_active_; ///< the thing I want to be restored
  template<typename T>
  class restorer {
    T* ref_;
    T save_;
  public:
    restorer(T* perm) : ref_(perm), save_(*ref_) {};
    ~restorer() { *ref_ = save_; }
  };
public:
  Unwind() : b_active_(false) {};
  void a() { out("a in"); b(); out("a end"); }
  void b() {
    out("b in");
    {
      restorer<bool> trust_in_the_stack(&b_active_); // "restorer" created on the stack
      b_active_ = true; // change b_active_ only while "within" b()
      c();
      out("b inner …
Run Code Online (Sandbox Code Playgroud)

c++ callstack

2
推荐指数
1
解决办法
2139
查看次数