Node.js本机C ++插件上的断点具有奇怪的行为,并且仅触发一次

问题描述

我遵循this指南为我的Node项目创建了一个简单的本机C ++插件

代码按预期工作,并在下面简要显示

    void Method(const FunctionCallbackInfo<Value>& args) {
      Isolate* isolate = args.GetIsolate();
      args.GetReturnValue().Set(String::NewFromUtf8(isolate,"world").ToLocalChecked());
    }
    
    void Initialize(Local<Object> exports) {
      NODE_SET_METHOD(exports,"hello",Method);
    }

    NODE_MODULE(NODE_GYP_MODULE_NAME,Initialize)

然后我有一个脚本在重复时调用hello方法

    const addon = require('./build/Release/addon');
    
    while (true) {
        console.log(addon.hello());
    }

一切似乎都能正常工作,并且按预期的方式向控制台发送了垃圾邮件,我得到了正确的“世界”输出

出于好奇,我在Method上给x64dbg附加了一个断点,希望看到该断点被多次击中。令我惊讶的是,断点仅触发一次,但脚本继续工作。

我很好奇为什么会这样。我希望本机代码重复执行一次,每个console.log执行一次,但这几乎就像Node在缓存结果并且只执行一次一样。

有人能解释我看到的这种行为吗,它在任何地方都有记录吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)