- 博客(15)
- 资源 (4)
- 收藏
- 关注
转载 Segmentation fault到底是何方妖孽
前两天和阿彬扯淡的时候(注意不是扯蛋),他说自己一个礼拜解决了三个Core dump,华丽丽之极,让我对其敬仰、膜拜之情如滔滔之江水,绵绵不绝。今天我也来谈一下Linux环境下开发时经常遇到的“Segmetation fault”的一点点个人看法,也算是抛砖引玉了。 (备注:我的glibc版本是2.12,GCC版本4.4.6,内核版本2.6.32-279) Linux上开发时最恼火
2016-05-31 23:21:08 1077
转载 浅析container_of(ptr, type, member)
问题:如何通过结构中的某个变量获取结构本身的指针???Linux内核链表:#define list_entry(ptr, type, member) \container_of(ptr, type, member)关于container_of见kernel.h中:/*** container_of - cast a member of a structure out
2016-05-30 11:15:32 403
转载 Ubuntu下查看Printk的输出
由于Linux内核的级别控制,导致printk打印的内容不一定都能从控制台正常输出,可以使用dmesg命令来输出所有级别的信息。输入: sudo dmesg –n 8 可以把所有日志信息输出来Linux命令:dmesg 功能说明:显示开机信息。语 法:dmesg [-cn][-s ]补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用
2016-05-26 00:42:59 2856
转载 linux内核模块的安全
linux可以动态的加载内核模块,在很多场合可能需要确保加载内核的安全性。如果被攻击者加载恶意内核模块,将会使得内核变得极其危险。 当然,稳妥的做法就是给内核模块进行签名,内核只加载能正确验证的签名。这是最首先想到的方法,当然,这个方法并不是很简单,你需要选用一套公钥加密方法,一般就是rsa算法了。难点是要在内核中进行验证模块的签名,这需要修改内核中的一些对应的地方。明显在load_m
2016-05-25 15:32:45 1950
转载 更改Ubuntu gcc、g++默认编译器版本
升级Ubuntu到11.10,但在编译Android的时候出错了。这个Android在升级系统之前编译是没有错误的,对比发现升级到Ubuntu 11.10后gcc、g++的版本都是4.6.1。而升级之前的版本是4.4.6。我想多半原因就在这里了。要想解决问题需要更改Ubuntu gcc、g++默认编译器版本。google一把发现有两种方法可以更改。方法一:首先,看一下你的Ubuntu都
2016-05-25 14:42:44 1736
转载 ubuntu12.04 insmod&rmmod出现Error:Device or resource busy
一:insmod时候错误:1:错误信息insmod: error inserting 'hello.ko': -1 Device or resource busy2:原因:你的代码里面的设备号和系统已经存在的相冲突3:查看系统的设备号:cat /proc/devices cat /proc/devices 查看和你的设备号有冲突的吗,注意要分开字符设备和块设备4
2016-05-25 14:18:49 1527
转载 static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别
C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。 下面是一个简单的程序:#include using namespace std; int m
2016-05-12 10:33:28 280
原创 error: lvalue required as unary ‘&’ operand
源码:printf("Now time is:%s\n",asctime(gmtime(&time(NULL))));提示错误:error: lvalue required as unary ‘&’ operand原因分析:time(NULL)返回的是一个long型,为什么会出现这个错误,如果你深入汇编里,可以看到函数返回值一般存储在eax寄存器里,如果你写了这样的语句
2016-05-09 17:16:38 16844
转载 getchar的用法
getchar函数名: getchar功 能: 从stdin流中读字符用 法: int getchar(void);注解: getchar有一个int型的返回值,当程序调用getchar时程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符getchar函数
2016-05-09 15:13:29 2789
转载 Linux基础知识
1、linux分区 --在linux里面所有的设备、任何东西,在linux看来都是文件。 --文件在它看来,有两种形式: 第一种是字符型(键盘输入、打印机); 第二种是二进制型(硬盘、光驱、U盘) --linux中所有硬件 --手动分区 --A、至少有两个分区 / 根分区 SWAP 交换分区(物理内存大小的两倍) --B、个人桌面分区
2016-05-09 12:34:19 251
转载 Ubuntu的复制粘贴操作及常用快捷键
Ubuntu的复制粘贴操作 1.最为简单,最为常用的应该是鼠标右键操作了,可以选中文件,字符等,右键鼠标,复制,到目的地右键鼠标,粘贴就结束了。2.快捷键。一般通用的是Ctrl+C与Ctrl+V。不过通用也是有限制的,一般的程序下是没有问题,遇到终端就不行了。其实终端下默认的是 Ctrl+Shift+C,Ctrl+Shift+V,可以自己在编辑项下面自己设置为常用的。3.文件
2016-05-09 12:31:42 91817 3
转载 Linux文件权限详解
文件和目录权限概述在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中的任何用户访问。同时,用户能够控制一个给定的文件或目录的访问程度。一个文件活目录可能有读、写及执行权限。当创建一个文件时,系统会自动地赋予文件所有者读和
2016-05-08 14:55:32 225
转载 Linux man手册使用指南
使用Linux下man已经很久了。但只是大概知道其内容的存放目录,以及man number xxx中mumber的含义。今天需要添加C++ man page。顺便将man的内容作一个较详细的了解。0. man后面数字的含义:之前Sam在查找C库函数时,会使用#man 3 func在查找系统调用时,则使用#man 2 fork.否则有时会出现查到同名的shell中命令
2016-05-08 14:11:21 266
转载 linux 下c 编译和调试
在linux下编写和调试c程序的环境搭建:需要安装gcc编译器和gdb调试器。其中gcc编译器只能用rpm包或者用linux的安装盘里的gcc安装文件安装。查看是否安装gcc可用gcc -v来显示相关gcc信息,如显示如下内容:则说明你的linux安装了gcc 同样用gdb -v来检测是否安装gdb 如果显示说明你已经安装好了gdb具体安装过程略..
2016-05-06 10:35:15 3716
转载 bzero 和memset的区别
bzero 原型:extern void bzero(void *s, int n); 用法:#include 功能:置字节字符串s的前n个字节为零且包括‘\0’。 说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。在P
2016-05-05 22:28:39 1068 1
飞思卡尔芯片MC9S12XS128的BootLoader设计.pdf
2020-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人