linux
文章平均质量分 52
sdsszk
这个作者很懒,什么都没留下…
展开
-
利用--wrap重定向函数排查内存泄露
背景在使用GCC编译器时,如果不想工程使用系统的库函数,例如在自己的工程中可以根据选项来控制是否使用系统中提供的malloc/free函数,可以有两种方法:(1). 使用LD_PRELOAD环境变量:可以设置共享库的路径,并且该库将在任何其它库之前加载,即这个动态库中符号优先级是最高的。(2). 使用GCC的–wrap选项:对symbol使用包装函数(wrapper function),任何对symbol未定义的引用(undefined reference)会被解析成__wrap_symbol,而任何原创 2021-05-27 15:23:31 · 693 阅读 · 0 评论 -
C 语言回调函数详解及其示例
什么是回调函数回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义。我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类似这么一个场景来说明:A君去B君店里买东西,恰好缺货,A君留下号码给B君,有货时通知A君。感觉这个让人更容易想到的是异步操作,而不是回调。另外还有两句英文让我印象深刻:1) If you call me, I will call you back; 2) Don’t call me, I will call you.原创 2021-02-25 20:09:03 · 359 阅读 · 0 评论 -
GDB调试相关命令解析
一、启动 1、gdb 2、调试在线进程 (1)启动gdb时链接目标进程(2)gdb中链接目标进程:(3)断开链接: 二、信息显示 1、栈信息2、变量3、寄存器4、内存5、源代码6、显示格式 三、断点 1、设置断点2、...转载 2020-10-31 22:13:22 · 1285 阅读 · 0 评论 -
解决arm启动过程中设置ulimit -c unlimited 不生效的方法
对于嵌入式Linux工程师来说,在工作中经常遇到段错误,而其中调试段错误的最好方式就是core_dump调试。core_dump调试要满足几个条件:1、ulimit -c unlimited,取消core file的大小限制;2、echo /proc/sys/kernel/core_pattern >mydir,设置生成core的目录;3、代码中取消singal相关的信号注册函数,但是很多段错误是发生在设备启动的过程中,所以这时候就需要在相关的脚本中设置在几个命令,由于环境变量的关系发现原创 2020-10-31 22:02:01 · 5875 阅读 · 2 评论 -
栈 堆 malloc深入研究
http://blog.coderhuo.tech/2017/10/12/Virtual_Memory_C_strings_proc/http://blog.coderhuo.tech/2017/10/15/Virtual_Memory_python_bytes/http://blog.coderhuo.tech/2017/10/16/Virtual_Memory_drawing_VM_diagram/http://blog.coderhuo.tech/2017/10/18/Virtual_Memor原创 2020-10-21 14:27:31 · 89 阅读 · 0 评论 -
编译选项中的硬浮点与软浮点区别
一、硬浮点与软浮点 1. 硬浮点 编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候ARM核直接把它转给协处理器执行。FPU 通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元(FPU)会带来性能的提升 2. ...转载 2020-09-19 14:43:03 · 9191 阅读 · 0 评论 -
代码段 数据段 BSS段 程序段堆栈段的理解
其实在程序运行时,由于内存的管理方式是以页为单位的,而且程序使用的地址都是虚拟地址,当程序要使用内存时,操作系统再把虚拟地址映射到真实的物理内存的地址上。所以在程序中,以虚拟地址来看,数据或代码是一块块地存在于内存中的,通常我们称其为一个段。而且代码和数据是分开存放的,即不储存于同于一个段中,而且各种数据也是分开存放在不同的段中的。5个段进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相原创 2020-07-18 15:19:09 · 404 阅读 · 0 评论 -
makefile编译不同文件夹下文件生成静态库
在不同的文件下:src文件夹中包含.c文件,lib文件夹中包含.h文件,obj文件夹中包含编译过程中生成的.o文件,bin文件夹中包含生成的目标文件和.a文件,代码结构如下:root:~/share/makefile$ tree ├── bin│ ├── libfun.a│ └── main├── include│ └── main.h├── Makefile├── o...原创 2019-05-09 09:39:07 · 1958 阅读 · 0 评论 -
Linux多线程——使用信号量同步线程
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-24 15:01:12 · 196 阅读 · 0 评论