![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
Nucleusx
这个作者很懒,什么都没留下…
展开
-
asan(AddressSanitizer)内存诊断(越界,非法访问等)工具使用---一款比valgrind更好用的工具
操作系统:centos8gcc:8.3.1 asan是gcc原生的内存诊断工具,可以诊断内存越界,非法访问,内存泄漏,内存double free等常见内存问题,并且效率比valgrind高好几倍,可以克服valgrind的一些问题,比如占用内存高的问题,是一款比valgrind更好用的内存问题分析工具!1.准备工作: 1.在编译环境上安装asan的开发库 yum install libasan.x86_64 2.在运...原创 2020-11-02 22:54:10 · 4514 阅读 · 5 评论 -
rpm包制作全过程
1.安装rpm制作工具yum -y install rpm-buildyum installrpmdevtools2.生成rpm制作目录rpmbuild -ba postgres-xl-10r1.1.rpm注意默认是生成在/root/rpmbuild目录下3.在SPECS生成rpm制作脚本rpmdev-newspec -o postgres-xl.spec注意这里必须以spec为后缀...原创 2020-10-15 22:58:26 · 595 阅读 · 1 评论 -
uftrace实现原理
"-pg"指定编译器在函数入口插入对mcount()桩函数的调用,而“-finstrument-functions”会指定编译器在函数入口插入对__cyg_profile_func_enter()函数的调用,在函数返回时插入对__cyg_profile_func_exit()函数的调用。 uftrace对这2种情况都能支持。正常情况下,c库提供了对这些桩函数的定义,所以我们链接程序时,是可以链接到c库里面的桩函数定义。[root@localhost test]# readelf -s /l...原创 2020-10-13 22:02:20 · 492 阅读 · 0 评论 -
gdb可视化调试过程中需要注意的问题点
1.调试过程中与实际行号对应不上 原因是编译器优化的问题,需要查看编译选项中是否有-O2或者-O3的编译选项,将优化的编译选项去掉后,一般就可以对应上了2.一定要加上-g选项,不然会找不到符号...原创 2020-09-28 11:52:33 · 265 阅读 · 0 评论 -
gdb可视化调试使用的一个小技巧
在vs上调试工具可以通过单步调试,一行一行可视化地跟踪代码的执行,而linux上其实也是可以的,gdb本身就自带了这个功能,可通过以下命令来启用: gdb ./xxx -tui 通过-tui选项,也就可以获得与vs一样的可视化调试效果...原创 2020-09-28 11:19:18 · 837 阅读 · 0 评论 -
确认可执行文件是否编译成功的方法
在linux上开发程序的过程中,要进行编译再替换,但有时候替换后,代码并没有生效,我们需要确定下是新增的代码没有编译进去还是替换没有成功,或者是我们编写的代码逻辑还是有问题,导致程序执行没有达到预期,我们可以使用以下步骤来确认:1.确认文件是否替换成功ls -lrt 如果可执行文件在末尾,并且时间符合预期,即可判断为替换成功2.确认文件是否编译成功nm ./a.out | grep new_symbolstrings ./a.out | grep new_sy...原创 2020-09-03 23:04:27 · 1457 阅读 · 0 评论 -
一种查找C++函数符号所在文件的通用方法
#include<iostream>using namespace std;class symbol{public: symbol(){}; ~symbol(){}; void make_symbol(int a){return;}};int main(){ symbol test; test.make_symbol(); return 0;} 在上面一个简单的程序中,如果我们要找make_symbol这个...原创 2020-08-18 10:47:56 · 875 阅读 · 0 评论 -
使用快速排序处理多个变量的排序
在window的文件排序中,我们可以看到这样一种情况,当我们在文件管理器中点击按照名称排序时,总是先出现所有的文件夹在出现所有的文件,或者相反,也就是说window的文件管理器是先按照文件/文件夹进行归档,再进行排序的,也就是在排序过程中有两个变量在发挥作用,一个是文件类型(文件夹/文件),另外一个是文件名称:对于这种涉及到两个或者两个以上变量的排序,常见的排序算法是否可以处理?答案是可以的,比如快速排序算法的处理方式如下:static int SortCmp(void *contex.原创 2020-06-01 22:05:39 · 724 阅读 · 0 评论