如何将调试器附加到 google v8?
Posted
技术标签:
【中文标题】如何将调试器附加到 google v8?【英文标题】:How can i attach a debugger to google v8? 【发布时间】:2019-01-07 12:33:29 【问题描述】:在我的应用程序(Windows 10 VC2017)中,我启用了使用 google v8 和 v8pp 编写和执行脚本的可能性。
v8pp 调用这样的脚本:
v8::Local<v8::Value> context::run_script(std::string const& source, std::string const& filename)
v8::EscapableHandleScope scope(isolate_);
v8::Local<v8::Context> context = isolate_->GetCurrentContext();
v8::ScriptOrigin origin(to_v8(isolate_, filename));
v8::Local<v8::Script> script;
bool const is_valid = v8::Script::Compile(context,
to_v8(isolate_, source), &origin).ToLocal(&script);
v8::Local<v8::Value> result;
if (!script.IsEmpty())
auto res1 = script->Run(context); //
if(! res1.IsEmpty())
result = res1.ToLocalChecked();
return scope.Escape(result);
如何将调试器(chrome 调试)附加到我的代码中?
我在https://v8.dev/docs/inspector 找到了谷歌的描述 - 但这留下了一些空白,主要由 js 代码组成?
我在https://github.com/xaxxon/v8toolkit/blob/master/src/debugger.cpp 找到了 v8toolkit 的实现。但这似乎不适用于 Windows。
将chrome调试附加到js代码的简单方法是什么?代码通常不是文件,而是存储在数据库中,然后存储在 std::string 中。
【问题讨论】:
试试微软的这篇文章code.visualstudio.com/docs/nodejs/nodejs-debugging 【参考方案1】:我终于完成了一个 Windows 版本的 v8inspector,它可以很好地与集成了 v8 的独立 Windows 应用程序配合使用。
我做了一个自己的分支,包括在哪里找到/构建所需的 3rd 方库(或在哪里找到预构建)的描述。我还做了一些更改/添加: https://github.com/StefanWoe/v8inspector
同时这也被合并到父项目中: https://github.com/hsharsha/v8inspector
编辑: 同时,我被指出使用 boost::beast 构建的另一个实现,没有其他依赖项。更简单,更强大等: https://github.com/ahmadov/v8_inspector_example
【讨论】:
以上是关于如何将调试器附加到 google v8?的主要内容,如果未能解决你的问题,请参考以下文章
如何将调试器附加到在 Windows Azure VM 上运行的应用程序?
如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?