gpt4 book ai didi

javascript - llnode 不返回 findjsobjects

转载 作者:行者123 更新时间:2023-11-28 04:28:27 25 4
gpt4 key购买 nike

我正在调试节点应用程序中的内存泄漏。但是我无法使用 llnode 显示任何 javascript 对象。我关注了布伦丹 instructions .

我在不同版本的 Ubuntu 16.04 和 17.04 以及使用节点 7 和 8 上进行了测试。

我回去尝试了一个简单的 case :

var http = require('http');
var host = "127.0.0.1"
var port = 1338

server = http.createServer(function myRequestListener(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
res.not_a_function()
}).listen(port, host);

console.log(`Server process ${process.pid} running at http://${host}:${port}/`);

然后我会发送一个 seg 错误信号(上面的代码被放入 server.js 中):

kill -s SIGSEGV `ps -ax | grep server.js | cut -d " " -f 1 | head -n 1`

然后我会运行:

lldb-4.0 -c /cores/core.dump -f /usr/bin/node

在 llnode 内,当我查询 javascript 对象时,我得到了空列表。

(lldb) v8 bt
* thread #1: tid = 28763, 0x00007f8947ff7929, name = 'node', stop reason = signal SIGSEGV
* frame #0: 0x00007f8947ff7929
frame #1: 0x00005585e8df035b node`v8_inspector::V8FunctionCall::callWithoutExceptionHandling() + 11
frame #2: 0x00005585e8ddf26c node`v8_inspector::V8Debugger::captureStackTrace(bool) + 92
frame #3: 0x00005585e8bc1493 node`node::inspector::InspectorSocketServer::SocketConnectedCallback(uv_stream_s*, int) + 163
frame #4: 0x00005585e8bbb821 node`node::inspector::InspectorConsoleCall(v8::FunctionCallbackInfo<v8::Value> const&) + 817
frame #5: 0x00007f8947f153f1
(lldb) v8 findjsobjects
Instances Total Size Name
---------- ---------- ----
(lldb)

我希望在哪里找到 javascript 对象。我怀疑这是一个 PEBKAC 问题,但如果有人有任何指示我可能误入歧途。

最佳答案

这是某种necroposting,但我们在电子构建中遇到了同样的问题 - v8 findjsobjects 没有返回任何输出。

以下所有内容均适用于 MacOS 构建。

因此,问题出在“可见性”链接器标志中,该标志被迫“隐藏”在电子构建中。这就是为什么 llnode 所需的 v8dbg_ 常量即使使用 debug ninja 配置也不会被链接器附加,并且 llonde 找不到任何对象。

为了解决这个问题,我们在 python 生成的 debug-output.cc 文件中使用 pragma 强制默认可见性,并最终能够查看 js 对象。遵循此路径附加

#pragma GCC 可见性推送(默认)

在文件 electron-gn/src/v8/tools/gen-postmortem-metadata.py 中的页脚声明之前,并从头开始重建所有电子。另外,构建可能非常巨大,请确保您有 ~100GB 的可用空间。

我认为同样的事情也适用于与 Electron 一起构建的 Node/v8。

希望这有帮助。

关于javascript - llnode 不返回 findjsobjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44832733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com