分析 vscode 运行 node.js 闪退时的场景

场景:使用 cmakejs 运行 js 代码时,出现了闪退问题

分析:需要加载相关 pdb 文件,如何使用 vscode 调试 js 代码,可以参考: 使用 vscode 调试 nodejs 代码

从弹出上后,触发了 abort 导致运行中断,结合控制台给出的信息

复制代码
D:\a\_work\1\s\src\vctools\crt\github\stl\src\mutex.cpp(64): mutex destroyed while busy
Request timeout.
Request timeout.

我们猜测是否与锁有关

那么如何查看崩溃的堆栈信息呢,首先,通过 RUN AND DEBUGJS Debug BuildWindows Attach 依附到 native 的线程上

再点击弹出的重试按钮,因为弹窗也提示了重试后查看错误信息,最终发现了崩溃的代码行

问题代码:

复制代码
std::unique_lock<std::mutex> lock(ctx->lock_);
  while (!ctx->called_)
    ctx->cv_.wait(lock);
  delete ctx;

从这段代码可以看出,lock 还没被释放掉就调用 delete 了,从而出现了 mutex destroyed while busy

修改:

复制代码
{
    std::unique_lock<std::mutex> lock(ctx->lock_);
    while (!ctx->called_)
      ctx->cv_.wait(lock);
  }
  delete ctx;

小结:使用 vscode 调试底层代码不熟悉,导致花了不少时间来研究如何查看崩溃的堆栈信息,最终才找出问题所在

相关推荐
山峰哥35 分钟前
沉浸式翻译插件深度评测:打破语言壁垒的黑科技利器
数据结构·科技·算法·编辑器·办公
l***51391 小时前
2024最新版Node.js下载安装及环境配置教程【保姆级】
node.js
c***87191 小时前
Node.js使用教程
node.js·编辑器·vim
e***87701 小时前
Node.js 与 Docker 深度整合:轻松部署与管理 Node.js 应用
docker·容器·node.js
z***02602 小时前
如何升级node.js版本
node.js
q***44812 小时前
从零开始在Windows系统上搭建一个node.js后端服务项目
windows·node.js
这是个栗子2 小时前
npm报错 : 无法加载文件 npm.ps1,因为在此系统上禁止运行脚本
前端·npm·node.js
爱学习的程序媛3 小时前
《深入浅出Node.js》核心知识点梳理
javascript·node.js
q***71013 小时前
从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CICD)
docker·容器·node.js
最晚的py3 小时前
Node.js环境变量配置
node.js