一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 [cpp] view ...
分类:
系统相关 时间:
2016-04-01 14:51:29
阅读次数:
416
位段(以32位int整数的机器为例)概念:C语言允许在一个结构体中以位为单位来指定成员所占内存的实际大小,这种以位为单位的成员我们称为位段,位段是一种特殊的结构体,位段的声明和任何普通的结构体成员声明类似,如下:Struct位段结构体名{Unsigned位段名:位段长度;Unsign..
分类:
其他好文 时间:
2016-03-06 23:49:53
阅读次数:
240
位段(bitfield)也叫位域位段的声明和结构类似,但是它的成员是一个或多个位的字段,这些不同长度的字段实际上存储于一个或多个整形变量中。位段的声明和任何普通成员声明相同,有两个例外:1.位段成员必须声明为int,signedint(有符号整型),unsignedint(无符号整型)2.成..
分类:
编程语言 时间:
2016-03-04 22:49:45
阅读次数:
277
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。 位段的定义格式为: type [var]:digits 其中: type只能为int,unsigned int,sig...
分类:
编程语言 时间:
2015-12-17 06:53:46
阅读次数:
219
再次梳理会用到的一些数据结构和名词中断向量表(中断描述符表)idt_table全局,8字节64位,从低到高位16位段选择符,32位偏移量,16位状态信息256项起始地址在内核数据节的idt中用于寻找各种门,门的作用是防止用户程序访问陷阱门、中断门等特殊资源,出于安全考虑,linux为用户留有3,4,...
分类:
其他好文 时间:
2015-10-23 16:02:19
阅读次数:
482
参考书籍:《Intel微处理器》 表1 默认的16位段 + 偏移寻址组合段偏移量特殊用途CSIP指令地址SSSP或BP堆栈地址DSBX、DI、SI、8位或16位数数据地址ES串指令的DI串目标地址 表2 默认的32位段 + 偏移寻址组合段偏移量特殊用途CSEIP指令地址SSESP或EBP堆栈...
分类:
系统相关 时间:
2015-09-20 23:53:14
阅读次数:
242
有些时候我们在一段 C/C++ 代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了段错误。遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没有,如果我们一味的去看代码找太疼苦了,因为我们都相信自己写的代码没问题,现实就是现实。接着,我们可能通过打印来定位到段错误的位置,这样会有个问题,如果代码量大,我们需要打印很多信息才能找到“段错误”的位置(这种办法实在太笨了),而往往有些时候,“段错误”光靠打印不一定能找出来。接下来,给大家介绍通过gdb快速定位“段错误”的位置。...
分类:
数据库 时间:
2015-09-12 21:52:58
阅读次数:
356
位域 :有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每...
分类:
其他好文 时间:
2015-09-03 17:47:31
阅读次数:
221
整理一下IA32处理器和x86-64处理器中通用寄存器的差异。
IA32既支持32位处理器,也向后兼容16位寄存器。IA32把16位的通用寄存器,标志寄存器和指令指针寄存器扩充为32位。段寄存器仍为16位。IA32 CPU中包含一组8个32位通用寄存器,用来存储整数数据和指针。它们的名字以%e开头,可以理解为对16位的extend。
这8个寄存器分别为eax, ebx,...
分类:
其他好文 时间:
2015-07-29 06:28:59
阅读次数:
211
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。
为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为"位域"或"位段"。所谓"位域"是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域...
分类:
编程语言 时间:
2015-07-28 23:11:21
阅读次数:
125