使用MinGW g++编译C++程序出现thread-exited调试信息的原因排查
MinGW g++调试时出现
thread-exited信息的原因及解决办法 原因
这条{message}=thread-exited,id="4",group-id="i1"是MinGW配套的GDB调试器输出的正常日志,并非程序出错:
- C++标准库在程序启动或退出阶段,可能会创建后台辅助线程(比如负责IO缓冲管理、全局静态对象析构的线程),这些线程完成任务后会正常退出,调试器默认会记录这类线程生命周期事件。
- 调试控制台默认开启了这类事件的日志输出,所以会显示这条信息,你的代码本身没有问题,程序运行正常是符合预期的。
解决办法
方法1:修改VS Code调试配置(若使用VS Code调试)
在.vscode/launch.json的setupCommands中添加命令,关闭线程事件日志:
"setupCommands": [ { "description": "关闭线程退出/创建事件日志", "text": "set print thread-events off", "ignoreFailures": true } ]
方法2:直接在GDB中执行命令
如果直接使用GDB调试,在调试会话中输入以下命令即可关闭这类日志:
set print thread-events off
方法3:过滤调试控制台输出(临时方案)
部分调试工具支持日志过滤,可在调试控制台的过滤选项中,屏蔽包含thread-exited的日志条目,但这种方法仅隐藏信息,并未真正关闭日志输出。
内容的提问来源于stack exchange,提问作者Ocean Weeb
相关产品推荐
相关产品推荐

