c
green369258
这个作者很懒,什么都没留下…
展开
-
C 关键字 volatile
C 关键字 volatile volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint; 当要求使用volatile 声明的变量的值的时候,系统总是重新原创 2007-11-10 15:07:00 · 784 阅读 · 0 评论 -
C语言中的#号
今天因为一个字符串连接的问题,搞的我头疼了老长时间,原因是很长时间不用忘了。哈哈,有点好笑。 好了不多说了,如正题,C语言中的#号作用可大的去了。包含一个头文件#include 预编译指令#ifdef #endif; #ifndef #elif #endif; #if #endif;宏定义#define; #undef#运算符 出现在宏定义中的#运算符原创 2009-11-30 18:33:00 · 1792 阅读 · 0 评论 -
ARM GNU 工具链在使用gprof中的一个bug
最近发现了ARM GNU 工具链在使用gprof中时存在一个bug,描述如下:版本为:gcc-3.2.1+glibc-2.3.1+binutils-2.13.2。这个bug存在于glibc-2.3.1至目前的最新版本(2.3.5)。搭建的工具链为ARM版本。 现象:gcc -pg(或gcc -pg -O2)选项编译的动态程序运行不生成gmon.out文件。静态程序不存在问题。 解决:下面两点都要注...转载 2018-05-08 11:06:22 · 1990 阅读 · 0 评论 -
linux LD_PRELOAD
前些天为了排查我们程序中不知道是库里面还是我们自己调用了assert断言,导致我们程序死亡。想通过hook拦截到调用这个函数的调用者,偶然间想起proload(预加载),小试牛刀使用如下代码#include <syscall.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>vo...原创 2018-05-08 11:06:58 · 5933 阅读 · 1 评论 -
printf输出死机
今天老大给安排了个任务,查死机BUG 这正是我喜欢的事情,于是二话不说投入200%的精力,开始查。话说此BUG 必先,一般来讲,毕现不是BUG,可是这个BUG却把我折腾的够呛,查了两个小时从有根据变成了没根据此BUG崩溃时我们dump出了他当时的寄存器值和堆栈的内容,提一下我们的运行环境arm1176,编译器为gcc 3.4.1。 通过分析寄存器的值 regs.ARM_pc = ...原创 2018-05-08 10:41:51 · 6185 阅读 · 0 评论 -
gcc __attribute__ 引言
本文只针对gcc 对c语言编译 的一些选项进行讨论。 每个编译器都有自身的一些特性,gcc也不例外,当然要使用这些选项会导致代码的可移植性变差,当然这些新特性可以让编译器更好的了解你代码的意图,编译出更优秀的机器码,我把这些C标准之外的特性当作工具使用。__attribute__ 就是利器之一。 以下摘自Using the GNU Compiler Collection原创 2012-06-22 14:21:51 · 4069 阅读 · 0 评论 -
gcc __attribute__ ((weak, alias (#name))) 1
本系列文章,着重讲__attribute__的用途 此属性,可以借助uClibc里面的弱符号来对库里符号进行一些更改,可以用于调试,我最近就用这个功能来调试system,很好用,类似可以实现hook函数的还有LD_PRELOAD,参见http://blog.csdn.net/green369258/article/details/7314298 uClibc原创 2012-06-23 21:37:07 · 4879 阅读 · 0 评论 -
gcc __attribute__ ((packed)) || __attribute__ ((aligned(4))) 2
此属性可以强制修改gcc的对齐方式 一般软件的2进制协议中,会定义一系列的规范,32位机一般会定义4字节对齐的协议,这样对于32位机来说速度是最快的。 最近发现gcc一个问题,在一个结构体包含unsignd long long (64位)类型时会导致结构体8字节对齐,且__attribute__ ((aligned(4))) 竟然无效 本例子用的x86原创 2012-06-26 21:37:37 · 4541 阅读 · 1 评论