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

相关推荐
chxii26 分钟前
1.11 HTTP 文件上传的核心协议
node.js
CRPER36 分钟前
告别繁琐配置:一个现代化的 TypeScript 库开发模板,让你高效启动项目!
前端·typescript·node.js
ScilogyHunter42 分钟前
vscode的c工程配置文件详解
c语言·ide·vscode
終不似少年遊*1 小时前
【软测】node.js辅助生成测试报告
软件测试·测试工具·node.js·postman·web
摆渡搜不到你2 小时前
Visual Studio Code 1.101.0 官方版
ide·vscode·编辑器
亦良Cool2 小时前
如何让 VS Code 仅通过滚轮放大字体,而不缩放整个界面?
vscode
菜鸟阿达4 小时前
Idea 2025 commit 关闭侧边栏 开启探框
java·ide·intellij-idea
C++ 老炮儿的技术栈6 小时前
visual studio 2022更改主题为深色
c语言·开发语言·c++·ide·windows·git·visual studio
_刘文凯_7 小时前
【无标题】
vscode
wsdchong之小马过河7 小时前
2025虚幻5蓝图编辑器的细节面板调不出来
ue5·编辑器