常用功能
KK20
这个作者很懒,什么都没留下…
展开
-
gnu 内建函数
__builtinconstantp(n)原创 2020-05-16 21:54:20 · 130 阅读 · 0 评论 -
gnu 内建函数
__builtinconstantp(n)原创 2020-05-16 21:50:12 · 231 阅读 · 0 评论 -
__builtin_expect(!!(x),1)
#define likely(x) __builtin_expect(!!(x),1)#define unlikely(x) __builtin_expect(!!(x),0)这两个宏的主要作用,就是告诉编译器:某一个分支发生的概率很高,或者说很低,基本不可能发生。编译器就根据这个提示信息,就会去做一些分值预测的编译优化。在这两个宏定义有一个细节,就是对宏的参数 x 做两次取非操作,这是为了将参数 x 转换为布尔类型,然后与 1 和 0 作比较,告诉编译器 x 为真或为假的可能性很高。..原创 2020-05-16 21:48:03 · 2388 阅读 · 0 评论 -
__builtin_return_address(LEVEL) __builtin_frame_address(LEVEL)
__builtin_return_address(LEVEL) __builtin_frame_address(LEVEL) LEVEL 只能取0 1 2......常数,不能用变量 层级太多段错误原创 2020-05-16 21:38:03 · 673 阅读 · 0 评论 -
多线程编程-条件变量
1.引言:条件变量是一种同步机制,允许线程挂起,直到共享数据上的某些条件得到满足。条件变量上的基本操作有:触发条件(当条件变为 true 时);等待条件,挂起线程直到其他线程触发条件。 条件变量要和互斥量相联结,以避免出现条件竞争--一个线程预备等待一个条件变量,当它在真正进入等待之前,另一个线程恰好触发了该条件。2.函数说明:1)初始化条件变量pthread_...原创 2020-01-01 00:21:59 · 203 阅读 · 0 评论 -
linux下 查找任意 宏 或者结构体定义 所在的头文件
...转载 2019-12-25 10:25:29 · 453 阅读 · 0 评论 -
深入理解C语言的函数调用过程
如果我们有个函数原型:int funtest(int x,int y int z char* ptr),在汇编层面,当调用它时栈的布局结构一般是下面这个样子:原创 2019-11-27 15:27:35 · 133 阅读 · 0 评论 -
backtrace 实现原理
显示函数调用关系(backtrace/callstack)是调试器必备的功能之一,比如在gdb里,用bt命令就可以查看backtrace。在程序崩溃的时候,函数调用关系有助于快速定位问题的根源,了解它的实现原理,可以扩充自己的知识面,在没有调试器的情况下,也能实现自己backtrace。更重要的是,分析backtrace的实现原理很有意思。现在我们一起来研究一下:glibc提供了一个backtr...转载 2019-11-26 21:41:16 · 6058 阅读 · 0 评论 -
bracktrace
转自:http://www.xuebuyuan.com/1504689.html一.用途:主要用于程序异常退出时寻找错误原因二.功能:回溯堆栈,简单的说就是可以列出当前函数调用关系三.原理:1. 通过对当前堆栈的分析,找到其上层函数在栈中的帧地址,再分析上层函数的堆栈,再找再上层的帧地址……一直找到最顶层为止,帧地址指的是一块:在栈上存放局部变量,上层返回地址,及寄存器值的空间。2....转载 2019-11-26 21:39:58 · 255 阅读 · 0 评论 -
006 解决段错误的方法
1 段错误通常系统发送SIGSEGV 信号,所以在自己的程序中处理该信号,用signal可以设置信号处理函数2 在信号处理函数中打印出回溯函数,有下面三个函数可用:#include <execinfo.h>int backtrace(void **buffer, int size);char **backtrace_symbols(void *const *buffer, in...原创 2019-11-26 20:44:24 · 361 阅读 · 0 评论 -
在Linux中如何利用backtrace信息解决问题----段错误系统发送SIGSEGV
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声...转载 2019-11-26 19:44:04 · 391 阅读 · 1 评论 -
005 Linux系统内存错误产生的原因及调试方法(段错误|core dumped)
&...转载 2019-11-25 10:38:43 · 358 阅读 · 0 评论 -
004 C语言高级用法---typeof()关键字
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-11-19 17:11:37 · 265 阅读 · 0 评论 -
003 malloc()和free()
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本...转载 2019-11-11 12:00:42 · 94 阅读 · 0 评论 -
002 Ubuntu16.04搭建ftp/tftp/nfs/ssh服务器
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-11-09 10:02:03 · 130 阅读 · 0 评论 -
001 关于Ubuntu中Could not get解决方法
源文档:https://www.cnblogs.com/yun6853992/p/9343816.html关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案1:我遇到的问题:在开机运行apt install vim 命令的时候,如下报错:2:参考博客:在Ubuntu中,有时候运用sudo apt-get install 安...原创 2019-11-05 07:16:13 · 1481 阅读 · 0 评论 -
000 设置终端,实现不回车即可读入字符
使用termios(3)及相关函数,适当的设置终端属性,不用回车即可获取终端输入的字符。参照 设置终端属性,不用回车获取终端输入字符#include <stdio.h>#include <termios.hint main(){ int c; struct termios oldSet,newSet; tcgetattr(fileno(...原创 2019-10-29 17:08:28 · 356 阅读 · 0 评论