news 2026/7/5 15:12:23

遇见的问题以及解决措施

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
遇见的问题以及解决措施

1、问题:‘make_unique’ is not a member of ‘std’

解决方法:

g++ -std=c++14 your_code.cpp -o your_program 或 g++ -std=c++17 your_code.cpp -o your_program

2、VScode 如何用gdb调试

(1)步骤总结

(2)配置 launch.json文件

需要修改的部分:

"name":配置文件名称,可修改也可不修改;

"program":程序可执行文件的完整路径,必须修改且要对应上;

"preLaunchTask":调试会话开始前需要执行的任务的名称,可修改也可不修改,若要修改必须与task.json中的任务名称"label"对应上,否则无法执行任务;

//launch.json文件内容 { "version": "0.2.0", "configurations": [ { "name": "调试threadpool",//可修改也可不修改 "type": "cppdbg", "request": "launch", "program": "${fileDirname}/threadpool",//修改,执行文件是threadpool "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] }, { "name": "C/C++: g++ 构建和调试活动文件",//可修改也可不修改 "type": "cppdbg", "request": "launch", "program": "${fileDirname}/threadpool",//修改,执行文件是threadpool "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++ 生成活动文件",/若要修改必须与task.json中的任务名称"label"对应上,否则无法执行任务; "miDebuggerPath": "/usr/bin/gdb" }, { "name": "C/C++: g++-9 构建和调试活动文件",//可修改也可不修改 "type": "cppdbg", "request": "launch", "program": "${fileDirname}/threadpool",//修改,执行文件是threadpool "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++-9 生成活动文件",若要修改必须与task.json中的任务名称"label"对应上,否则无法执行任务; "miDebuggerPath": "/usr/bin/gdb" }, { "name": "C/C++: gcc 构建和调试活动文件",//可修改也可不修改 "type": "cppdbg", "request": "launch", "program": "${fileDirname}/threadpool",//修改,执行文件是threadpool "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ], "preLaunchTask": "C/C++: gcc 生成活动文件",若要修改必须与task.json中的任务名称"label"对应上,否则无法执行任务; "miDebuggerPath": "/usr/bin/gdb" } ] }

(3)配置task.josn文件

需要修改的部分:

"command":需要在调试之前执行的命令文件路径,需要修改为makefile路径,makefile要添加执行权限,且在终端中输入./makefile是可以执行makefile的。

"args":其他要传递给编译器或编译脚本的参数

//task.josn文件内容 { "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc 生成活动文件", "command": "/home/lxl/mythreadpool_project/makefile",//需要修改为makefile路径 "args": [//修改参数 ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "调试器生成的任务。" }, { "type": "cppbuild", "label": "C/C++: g++ 生成活动文件", "command": "/home/lxl/mythreadpool_project/makefile", "args": [ ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "调试器生成的任务。" }, { "type": "cppbuild", "label": "C/C++: g++-9 生成活动文件", "command": "/home/lxl/mythreadpool_project/makefile", "args": [ ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "调试器生成的任务。" } ], "version": "2.0.0" }
//makefile 文件内容 gcc -std=c++17 -Wall -g -c main.cpp #先编译成依赖main.cpp文件生成main.o文件,需要加 -g才能进行调试 gcc -std=c++17 -Wall main.o -g -o threadpool -lpthread -lstdc++ #再用生存的main.o文件生成可执行文件threadpool,需要添加 -lpthread标准库,不然无法执行线程函数,需要添加-lstdc++标准库,因为用 gcc 连接 C++ 程序需要人为指定连接 C++ 标准库,否则就会出现undefined reference to `__gxx_personality_v/0' 之类的错误。

注意:

1、 先编译成依赖main.cpp文件生成main.o文件,需要加 -g才能进行调试;

2、再用生存的main.o文件生成可执行文件threadpool,需要加 -g才能进行调试;

3、需要添加 -lpthread标准库,不然无法执行线程函数,需要添加-lstdc++标准库,因为用 gcc 连接 C++ 程序需要人为指定连接 C++ 标准库,否则就会出现undefined reference to `__gxx_personality_v/0' 之类的错误。

4、下面这样的makefile文件内容会出现报错

#makefile #编译器 CXX = g++ #编译选项 CXXFLAGS = -std=c++17 -Wall #目标文件 TARGET = threadpool #源文件 SRCS = main.cpp #threadpool.cpp #目标文件 OBJS = $(SRCS:.cpp=.o) #头文件 HEADERS = threadpool.h #默认目标 all:$(TARGET) #生成可执行文件 $(TARGET):$(OBJS) -$(CXX) $(CXXFLAGS) -o $@ $^ -lpthread -./$(TARGET) #生成目标文件 %.o:%.cpp $(HEADERS) -$(CXX) $(CXXFLAGS) -c $< #清理生成文件 clean: -rm -f $(OBJS) $(TARGET)

无法直接执行makefile文件

按照上述步骤进行操作之后就可以进行调试了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 15:11:26

oyunfor土区礼品卡购买教程及踩坑记录

前置条件&#x1f52e;我用的美丽国 chorme浏览器(edge没成功) 可安装翻译插件 招商银行万事达(研究生优选) 网络连接设置 属性里取消勾选ipv6协议(买好再改回来)1.注册账号需&#x1f52e; 用的QQ邮箱&#xff0c;Gmail邮箱收不到验证码 其他信息正常填写&#xff0c;号码862.…

作者头像 李华
网站建设 2026/7/5 15:10:36

小学期第五周记录

完善了接收端电路与pcb设计布线&#xff0c;并打板原理图如下&#xff1a;PCB电路图如下&#xff1a;2D预览图如下&#xff1a;3D预览图如下&#xff1a;

作者头像 李华
网站建设 2026/7/5 15:10:23

ROS2参数服务深度解析:从底层实现到工业级实践

一、参数服务体系架构剖析 1.1 参数服务核心价值 机器人系统开发中,参数配置机制直接影响系统的灵活性和可维护性。ROS2的参数服务体系通过标准化的参数管理接口,实现了模块间的解耦配置。区别于传统配置文件方式,该系统支持: 实时动态调整运行参数 多节点配置同步机制 类…

作者头像 李华
网站建设 2026/7/5 15:09:43

反反爬进阶:AI自动识别反爬策略并动态切换采集方案

做工业数据采集的同行应该都有过这种体验&#xff1a;好好的采集任务跑着跑着突然告警&#xff0c;成功率断崖式下跌&#xff0c;登上去一看&#xff0c;要么返回403&#xff0c;要么弹出验证码&#xff0c;要么接口数据全空——对方反爬策略升级了。 传统模式下&#xff0c;全…

作者头像 李华
网站建设 2026/7/5 15:09:35

浏览器用户画像大屏搭建:从静态布局到交互联动(附完整代码)

本文为 Uniplore 「浏览器用户画像分析」实验系列全流程指南&#xff0c;覆盖静态布局制作、数据接入、交互联动三大核心模块&#xff0c;包含可直接复用的 SQL、蓝图节点代码与避坑技巧&#xff0c;新手也能零代码复刻企业级数据大屏。一、实验背景与目标本系列实验基于user_p…

作者头像 李华
网站建设 2026/7/5 15:06:28

ReActor换脸插件完整指南:3分钟掌握Stable Diffusion高效AI换脸

ReActor换脸插件完整指南&#xff1a;3分钟掌握Stable Diffusion高效AI换脸 【免费下载链接】sd-webui-reactor 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-reactor 想要在Stable Diffusion中实现快速、精准的AI换脸吗&#xff1f;ReActor正是你需要的强大…

作者头像 李华