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

相关推荐
我叫汪枫5 小时前
在后台管理系统中,如何递归和选择保留的思路来过滤菜单
开发语言·javascript·node.js·ecmascript
yc_12245 小时前
用 Visual Studio 远程调试 Linux:从零到流畅的完整指南
linux·ide·visual studio
技术钱5 小时前
nodejs使用RustFS容器服务搭建对象存储oss
node.js·egg
NQBJT10 小时前
VS Code配置Python人工智能开发环境
开发语言·人工智能·vscode·python
大貔貅喝啤酒11 小时前
接口测试_Postman(详细版)
javascript·测试工具·node.js·自动化·postman
桜吹雪11 小时前
Langchain.js官方文档:构建具备按需加载技能的 SQL 助手
javascript·人工智能·node.js
π同学12 小时前
ESP-IDF+vscode开发ESP32第十讲——I2S工程2
vscode·esp32·sd·音频播放
望眼欲穿的程序猿13 小时前
苹果系统使用VsCode开发QT
ide·vscode·编辑器
其实防守也摸鱼14 小时前
带你了解与配置phpmyadmin
笔记·安全·网络安全·pdf·编辑器·工具·调试
IOT那些事儿14 小时前
Qt5 VSCode调试
c++·vscode·mingw·qt5