linux
文章平均质量分 52
搁浅的渔
这个作者很懒,什么都没留下…
展开
-
gdb打印vector(亲测有效)
或者可以使用上面提到的pvector myVector N-1,表示打印第N个对象,但是该输出是一个格式化之后的结果,我们无法再对该输出结果进行操作,但是上面两个命令可以,例如p (myVector._M_impl._M_start)[N-1].element,因此,如果只是查看输出结果,我们可以直接使用pvector,如果还需要对vector的某个结果进行操作,建议使用上述两个命令。当前测试的GDB版本为7.9.1,还不能直接用print命令打印vector。// 这两种方式,编号均从0开始。原创 2023-03-08 11:42:19 · 1547 阅读 · 0 评论 -
valgrind的使用
需要注意的是,memcheck会加入代码检查每一片内存的访问和进行值运算,导致整体代码大小至少增加12倍,运行速度比平时慢25-50倍,所以使用valgrind时,保证机器环境有足够多的内存,如果进程本身启动内存有十几G,那用valgrind启动程序时,一般启动特别慢,可能1h才能启动程序。你的程序可能,至少在原则上,应该在退出前释放这些内存块。这些有指针指向的内存块和没有指针指向的内存块,或者只有内部指针指向的块,都可能产生内存泄露,因为实际上没有一个指向块起始的指针可以拿来释放,即使你想去释放它。原创 2022-12-09 09:54:05 · 4527 阅读 · 0 评论 -
【linux下小技巧总结】
1:linux下进行内存泄露定位使用valgrind首先下载valgrind,并解压到linux服务器上,进入解压目录,修改里面autogen.sh的权限和格式,运行valgrind --log-file=/home/valgrind.log --tool=memcheck --leak-check=full ./test...原创 2022-05-16 14:28:40 · 121 阅读 · 0 评论 -
【gdb调试命令】
GDB调试命令用gdb运行程序gdb -args xx运行程序(gdb)r暂停程序(gdb)s(gdb)或者输入ctrl + c继续程序(gdb)c显示堆栈(gdb)bt将堆栈信息写入到指定的文件(gdb)set logging file mylog.txt(gdb)set logging on(gdb)thread apply all bt显示线程信息(gdb)info thread查看某个线程(gdb)thread 13(线程信息前面的原创 2022-05-05 10:21:10 · 984 阅读 · 0 评论 -
【linuxs make 出现undefined reference to ‘std::__cxx11...】
类似这种:解释一:在CentOS系统上安装了gcc4.8.2和gcc7.2两个版本,gcc使用的是4.8.2版本,g++使用的是7.2版本,使用make编译cmake时出现c++11标准库未定义错误,两个版本的编译器使用的库版本也不同,对c++11标准的实现程度也不一样,所以会出现该问题,将g++换成4.8.2版本即解决该问题。个人感觉编译器报标准库的错误很可能就是工具链版本的问题,修改使用合适的工具链应该即可,比如对gcc软件,所有编译器都使用统一版本即可。————————————————原创 2022-03-17 15:21:33 · 10577 阅读 · 1 评论 -
【linux配置环境变量】
vim etc/project按 “i” 表示插入的意思,添加你需要添加的环境变量例:export PATH=PATH:/opt/gurobi800/linux64/binexportLDLIBRARYPATH=PATH:/opt/gurobi800/linux64/bin export LD_LIBRARY_PATH=PATH:/opt/gurobi800/linux64/binexportLDLIBRARYPATH=LD_LIBRARY_PATH:/opt/gurobi800/linu.原创 2022-03-08 15:33:57 · 320 阅读 · 0 评论 -
【Linux 下gdb调试——定位程序崩溃位置】
当程序出现错误,可使用gdb在线调试,以下举一个简单例子说明,如何定位程序。1.创建一个文件gdb_test.c,输入以下代码。代码中的第5行,使用了未初始化为有效值的指针,运行过程中肯定是会出错的。1 #include “stdio.h”234 int main()5 {6 int b = 0;7 b = 10;8 printf("****** b = %d ************ ",*b);9 }2.编译源码,生成可执行文件gdb_test。增加参转载 2022-03-01 19:25:14 · 4469 阅读 · 0 评论 -
centos 下开发环境中库版本更新
centos 下开发环境中库版本更新centos 下开发环境中库版本更新gcc 版本更新方法一方法二ld 更新为了降低风险,注意备份或者克隆保存虚拟机状态gcc 版本更新开发过程中有时会遇到 gcc 版本升级或切换的问题,这里介绍2种方式,这里比较推荐第二种方法一下载对应版本的 gcc 源码,而编译源码首先需要本地拥有编译器# 安装一些可能用到编译的工具# 我的 centos 下默认的 gcc 版本是 4.8, 这也是我需要更新 gcc 的原因yum insta原创 2021-12-20 11:51:19 · 524 阅读 · 0 评论