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

相关推荐
无你想你17 小时前
利用vscode时进行调试,即使设置justMyCode为False仍然失败,如何解决?
ide·vscode·编辑器·justmycode
濮水大叔18 小时前
这个Database Transaction功能多多,你用过吗?
typescript·node.js·nestjs
鹧鸪yy19 小时前
认识Node.js及其与 Nginx 前端项目区别
前端·nginx·node.js
weixin_4738947719 小时前
mac 电脑安装类似 nvm 的工具,node 版本管理工具
macos·node.js
foundbug99919 小时前
Node.js导入MongoDB具体操作
数据库·mongodb·node.js
Linux运维技术栈19 小时前
多系统 Node.js 环境自动化部署脚本:从 Ubuntu 到 CentOS,再到版本自由定制
linux·ubuntu·centos·node.js·自动化
天天进步201519 小时前
Node.js中的Prisma应用:现代数据库开发的最佳实践
数据库·node.js·数据库开发
xcs1940520 小时前
AI 自动化编程 trae 体验 页面添加富编辑器
运维·自动化·编辑器
PineappleCoder20 小时前
同源策略是啥?浏览器为啥拦我的跨域请求?(二)
前端·后端·node.js
Zeluar1 天前
关闭VSCode Markdown插件在Jupyter Notebook中的自动预览
ide·vscode·jupyter