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

相关推荐
VernonJsn1 小时前
visual studio 2022的windows驱动开发
ide·驱动开发·visual studio
阿尔帕兹1 小时前
Visual Studio2019/2022离线安装完整教程(含闪退解决方法)
ide·visual studio
萌止1 小时前
Visual Studio下载保姆级安装教程
ide·visual studio
GISer_Jing1 小时前
解决Visual Studio调试时找不到exe文件的终极指南
ide·visual studio
嫦娥妹妹等等我1 小时前
Visual Studio 2022 版本对决:Community、Professional 与 Enterprise 全方位深度解析
vscode
程序人生5181 小时前
Visual Studio 2026下载与安装详细教程!(附下载地址)
ide·visualstudio·visual studio
摇滚侠6 小时前
IDEA 定义返回值快捷键
java·ide·intellij-idea
weixin_6600967810 小时前
如何关闭vscode中的copilot生成结束后的消息提醒
ide·vscode·copilot
玄同76511 小时前
Trae国际版与国内版深度测评:AI原生IDE的双生花
ide·人工智能·ai编程·cursor·ai-native·trae
Jackson@ML12 小时前
[Kimi重磅出击!]用Kimi Code智能高效开发Web应用程序指南
ide·python·kimi code