分析 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 调试底层代码不熟悉,导致花了不少时间来研究如何查看崩溃的堆栈信息,最终才找出问题所在

相关推荐
zew10409945883 分钟前
PyCharm【2023.2.5】下使用编辑器自带的连接功能,连接MySQL数据库
数据库·mysql·pycharm·编辑器·连接mysql
程序员爱钓鱼4 分钟前
Node.js 编程实战:图像与文件上传下载
前端·后端·node.js
程序员爱钓鱼5 分钟前
Node.js 编程实战:日志管理与分析
后端·面试·node.js
kong79069281 小时前
Java-Intellij IDEA 自动导包设置
java·ide·intellij-idea
づ安眠丶乐灬7 小时前
计算机视觉中的多视图几何 - 1
人工智能·vscode·计算机视觉
咩咩大主教9 小时前
VSCode远程连接Linux部署的Docker
linux·vscode·docker
UVM_ERROR10 小时前
RDMA Scheduler + TX + Completion RTL 开发经验分享
笔记·vscode·ssh·github·芯片
AA陈超12 小时前
JetBrains Rider ‘IntelliJ‘ 快捷键映射表
ide·intellij-idea·idea·intellij idea
天勤量化大唯粉12 小时前
枢轴点反转策略在铜期货中的量化应用指南(附天勤量化代码)
ide·python·算法·机器学习·github·开源软件·程序员创富
vipbic13 小时前
Strapi 5 怎么用才够爽?这款插件带你实现“建站自由”
后端·node.js