- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 node-inspector 调试在 V8 中运行的 JavaScript 脚本.在应用程序方面,我只是做了
v8::Debug::EnableAgent("MyApp", 5858);
Node-inspector 连接良好,甚至能够暂停/取消暂停并显示代码。但是,逐步执行不起作用,断点也不起作用,可能还有很多其他的东西。当我尝试做这些事情时,我从 Node-inspector 得到了这些错误:
Node Inspector v0.7.0
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
Received request for a method not implemented: Debugger.setSkipAllPauses
Received request for a method not implemented: Debugger.setSkipAllPauses
Received request for a method not implemented: Debugger.setSkipAllPauses
Received request for a method not implemented: Debugger.setBreakpoint
Received request for a method not implemented: Debugger.setBreakpoint
Received request for a method not implemented: Debugger.setBreakpoint
所以我想我遗漏了什么。
我不确定我尝试做的事情是否得到支持——因为我猜,node-inspector 是为 Node.js 而不是为任意 V8 设计的,对吧?如果是这样,需要什么才能让它发挥作用?
特别感谢 Miroslav 的帮助。运行 DEBUG=node-inspector:protocol:* node-inspector
,我更进一步。逐步执行现在有效,断点在大多数情况下有效(除非您选择了错误的源文件 - 见下文)。
我提供了一个全局的 process
对象,如下所示:
// process object: http://nodejs.org/api/process.html#process_process
process.stdout = ...
process.stderr = ...
process._baseDir = ...
process.mainModule = {filename: process._baseDir + "/main.js"}
process.argv = ["myapp.exe", process.mainModule.filename]
process.cwd = function() { return process._baseDir; }
现在我在控制台中收到错误 Internal error: TypeError: Cannot read property 'line' of null
。在 Node 检查器中,我得到了这个:
Wed, 19 Mar 2014 11:58:43 GMT node-inspector:protocol:v8-debug request: {"seq":170,"type":"request","command":"backtrace","arguments":{"inlineRefs":true,"fromFrame":0,"toFrame":50,"maxStringLength":10000}}
Wed, 19 Mar 2014 11:58:43 GMT node-inspector:protocol:devtools frontend: {"method":"Debugger.setOverlayMessage","id":48}
Wed, 19 Mar 2014 11:58:43 GMT node-inspector:protocol:devtools backend: {"id":48}
Wed, 19 Mar 2014 11:58:43 GMT node-inspector:protocol:v8-debug response: {"seq":41,"request_seq":170,"type":"response","success":false,"message":"Internal error: TypeError: Cannot read property 'line' of null"}
另一件事是脚本文件并不总是正确的。在 C++ 方面,我现在像这样加载它们:
ReturnType execJsFile(const std::string& jsSourceDir, const std::string& extfilename) {
v8::TryCatch try_catch;
std::string fullfilename = jsSourceDir + "/" + extfilename;
std::string sourceStr;
CHECK_RETURN(readFile(fullfilename, sourceStr));
// The origin is for the debugger, e.g. node-inspector. It expects an URL.
Local<String> origin = jsStr("file:///" + fullfilename);
Local<String> source = jsStr(sourceStr);
Local<v8::Script> script = Script::Compile(source, origin);
if(script.IsEmpty()) {
assert(try_catch.HasCaught());
return "JS compile failed: " + jsReportExceptionToString(Isolate::GetCurrent(), &try_catch);;
}
Local<Value> result = script->Run();
if(result.IsEmpty()) {
assert(try_catch.HasCaught());
return "JS script execution failed: " + jsReportExceptionToString(Isolate::GetCurrent(), &try_catch);
}
return true;
}
这会将所有文件放在源列表中的 file://
域下。但是,main.js
在 (无域)
下获得了一个额外的条目。当我做出改变时
process.mainModule = {filename: "file:///" + process._baseDir + "/main.js"}
它消失了,但是,根据 doc,这并不是我所期望的那样。 .
当我暂停/中断 main.js 中的执行时,它会出现在另一个 Source [VM] main.js
中,并获得黄色背景。
此外,file://
下的 Sources 中的所有文件都在第一行添加了 (function (exports, require, module, __filename, __dirname) {
前缀源代码。该行不是来 self 的代码,而是来自 Node 检查器。为什么要在此处添加它?特别奇怪,因为我的代码添加了一个略有不同的前缀 ( function(module, exports) {
.
最佳答案
运行 DEBUG=node-inspector:protocol:* node-inspector
并检查消息,您可能可以在那里找到更多信息。您也可以尝试使用旧版本,例如0.1.9,它可能对 Node 特定的东西有更少的依赖。
我会说 95% 的 Node Inspector 代码仅使用 V8 协议(protocol)。查找 DebuggerClient.prototype.evaluateGlobal
的用法以查找使用 Node 特定功能的位置。
首先要更改的是 lib/PageAgent.js
中的 getResourceTree
。要么实现您自己的方式列出所有源文件(包括那些尚未加载的文件),要么返回一个空树。
更新
首先尝试 Node 的 CLI 调试器:
$ node debug localhost:5858
据我所知,CLI 调试器仅使用 V8 调试器协议(protocol)功能,没有特定于 Node 的功能。当您能够使用 CLI 调试 V8 应用程序时,您就会知道任何其他问题都在 Node Inspector 中,而不是在您的 V8 应用程序中。
关于javascript - 使用 Node 检查器调试 V8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22153131/
我用运行 Node node --debug app OR node --debug-brk app 它有反应 debugger listening on port 5858 Express serv
这个问题在这里已经有了答案: What is the difference between (int *i) and (int* i) in context of both C and C++? [
我有一个应用程序,它通过消息队列将数据库写入命令分派(dispatch)给工作人员(数量非常大),因此无法保证它们的接收顺序。 我有两个 Node ,例如“Account”和“Media”。在此假设的
有没有办法在调用 ts-node 时将选项传递给 Node ?我正在尝试在 Node 中使用一个实验性功能,如果它能与 ts-node 一起使用,那就太好了。 这就是我目前正在做的事情: ts-nod
我有一个容器化的Node应用程序,它在DigitalOcean服务器上运行。当我更新服务器上的应用程序时,该应用程序必须关闭一小段时间。为了能够更新应用程序并避免停机,我目前正在阅读零停机时间部署/蓝
我正在编写一个 Node.js 应用程序。我正在使用 request 和 Cheerio 加载一组 URL 并获取该网站的大量信息,现在假设我想要获取的只是标题: var urls = {"url_1
如果不弹出以下错误,我无法安装任何 Node.js 模块。错误代码引用package.json文件。如果知道为什么会发生这种情况,我们将不胜感激。 最佳答案 这些不是错误,它们只是警告。一切都应该如此
如果我运行(从我的项目目录中): supervisor javascripts/index.js 我得到:/usr/bin/env: Node :没有这样的文件或目录 如果我运行: node java
我已遵循使用 Node-Inspector 的所有步骤 但是当我打开应用程序时,我在控制台上看不到任何脚本或日志。 我的应用程序在端口 4000 上运行。我认为唯一可能发生冲突的是端口 8080 上的
我在android中使用rxjava2,有时会遇到这样的问题: Observable.fromArray( // maybe a list about photo url in SD
我目前正在使用 Node 光纤来编写同步服务器端代码。我主要通过 try-catch block 进行错误处理,但外部库或其他小部分异步代码中总是有可能发生错误。我正在考虑使用新的域功能来尝试将这些错
看起来node-debug是node-inspector周围的一个shell?分别什么时候应该使用? 最佳答案 如果您安装node-debug,您只能访问node-debug命令。 如果您安装node
我目前正在代理后面工作,该代理不允许我执行此命令的 HTTP GET 请求阶段: Node node-sass/scripts/build.js 请求阶段: gyp http GET https://
听说node js可以用在服务端。我以前用过jsp。 jsp页面内部的java代码对客户端是不可见的。如果 Node js 只是 javascript,那么它如何对客户端不可见? 最佳答案 首先,No
我正在为 Node native 插件从 node-waf 构建迁移到 node-gyp 构建系统。 node-gyp 说它支持多个目标版本,但我在使用 node-gyp 时找不到如何指定目标 Nod
给定一个 $node ,我正在尝试在以下两种输出该 $node 的方式之间做出决定。 要么 $output = theme('node', $node); 或 node_build_content($
如果package.json中的窗口A打开一个新窗口B,node-main如何访问它?这是我的代码: package.json { "main": "index.html",
我试图在我的 xml 中的特定节点 ( ) 之前插入一个注释节点。这是它的方法: function test(xmlResponse) { var parser = new DOMParse
我正在尝试做npm install wrtc使用 Node 版本 16.14.0 但这还没有完成。它在给npm error code 1所以我试图将 Node 版本更改为以前的 lts 14.19.0
当我在 Visual Studio 中运行 Node.js 应用程序时,我收到以下消息:DeprecationWarning: 'node --debug' 和 'node --debug-brk'
我是一名优秀的程序员,十分优秀!