debugeeker的专栏

只提供原创和翻译的技术文章

排序:
默认
按更新时间
按访问量
RSS订阅

《coredump问题原理探究》Linux x86版7.11节string对象

在定位map coredump的那一节已经接触了string对象.在这里重温一下. 看一个例子: 1 #include 2 #include 3 4 int main() 5 { 6 std::string str; 7 char* ptr =...

2015-11-24 22:51:02

阅读数:2293

评论数:1

《coredump问题原理探究》Linux x86版7.10节set相关的iterator对象

看一下set的iterator.由于map和set的相似性,只要看set就可以了. 1 #include 2 3 void init( std::set& set ) 4 { 5 for ( int i = 0; i < 0x10; i++ ) 6 ...

2015-11-20 23:48:11

阅读数:1663

评论数:0

《coredump问题原理探究》Linux x86版7.9节list相关的iterator对象

这一节,看一下list的iterator对象在内存的布局 1 #include 2 3 void init( std::list& lst ) 4 { 5 for ( int i = 0; i < 0x10; i++ ) 6 { 7 ...

2015-07-13 23:03:29

阅读数:1926

评论数:0

《coredump问题原理探究》Linux x86版7.8节vector相关的iterator对象

在前面看过了一个vectorcoredump的例子,接触了vector的iterator,可以知道vector的iterator只有一个成员_M_current指向vector某一个元素. 先看一个例子: 1 #include 2 3 void init( std::vector&am...

2015-07-09 20:06:19

阅读数:2081

评论数:0

《coredump问题原理探究》Linux x86版7.7节 set对象

看一下bits/stl_map和bits/stl_set可以看到map和set的定义如下: 84 template , 85 typename _Alloc = std::allocator > > 86 class map 87 ...

2015-07-04 22:25:27

阅读数:2047

评论数:0

《coredump问题原理探究》Linux x86版7.6节 Map coredump例子

定位一个map相关的coredump来熟悉一下: Core was generated by `./xuzhina_dump_c07_s3_ex 5 / 6'. Program terminated with signal 11, Segmentation fault. #0 0x0000000...

2015-04-29 23:32:24

阅读数:2360

评论数:0

《coredump问题原理探究》Linux x86版7.5节 Map对象

先看一个例子:          1 #include 2 3 int main() 4 { 5 std::map iMap; 6 7 iMap[5] = 6; 8 iMap[8] = 20; 9 iMap[2] =...

2015-04-27 23:37:58

阅读数:1215

评论数:0

《coredump问题原理探究》Linux x86版7.4节List coredump例子

看一个coredump例子: 看一个coredump例子: Core was generated by `./xuzhina_dump_c07_s2_ex'. Program terminated with signal 11, Segmentation fault. #0 0x0285b...

2015-04-25 23:22:31

阅读数:1618

评论数:0

《coredump问题原理探究》Linux x86版7.3节List对象

先看一下例子: 1 #include 2 3 int main() 4 { 5 std::list lst; 6 7 lst.push_back( 0x12345678 ); 8 lst.push_front( 0xabcdef01 );...

2015-04-23 23:06:10

阅读数:1171

评论数:0

《coredump问题原理探究》Linux x86版7.2节vector coredump例子

看一个coredump的例子: [xuzhina@localhost s1_ex]$ gdb xuzhina_dump_c07_s1_ex core.27776 GNU gdb (GDB) Red Hat Enterprise Linux (7.2-75.el6) Copyright (C) ...

2015-04-21 23:04:14

阅读数:1630

评论数:0

《coredump问题原理探究》Linux x86版7.1节vector对象

先看一下例子: 1 #include 2 3 int main() 4 { 5 std::vector vec; 6 vec.push_back( 0xffeeffab ); 7 vec.push_back( 0xabcdef01 ); ...

2015-02-25 22:55:15

阅读数:1189

评论数:1

《coredump问题原理探究》Linux x86版6.8节多继承coredump例子

下面看一个coredump的例子: (gdb) bt #0 0x08048662 in xuzhina_dump_c06_s5_ex_child::inheritFrom(char*, int) () #1 0x08048609 in main () 先看一下xuzhina_dump_c0...

2015-02-16 21:25:44

阅读数:1142

评论数:0

《coredump问题原理探究》Linux x86版6.7节多继承

类的多继承大致可以分为两种情况.一种是无共同基类的.一种是有共同基类的. 先看一下第一种情况: 1 #include 2 class xuzhina_dump_c06_s5_mother 3 { 4 private: 5 int m_age...

2015-02-08 09:58:20

阅读数:919

评论数:0

《coredump问题原理探究》Linux x86版6.6节单继承

在C++里,类的多态是通过继承由虚函数来体现的。那么在单继承中,类的成员变量和虚函数的分布又是怎样的呢? 看一下例子: 1 #include 2 class xuzhina_dump_c06_s4_base 3 { 4 private: 5 ...

2015-02-04 20:04:43

阅读数:937

评论数:0

《coredump问题原理探究》Linux x86版6.5节虚函数的coredump例子

在大型项目中,很容易出现版本不匹配的问题,其中导致的虚函数飘移的问题比较难解决。   在这里,用一个例子来说明如何解决这种问题。 建立三个源文件:testso.h,testso.cpp,xuzhina_dump_c6_s3_ex.cpp。 testso.h的代码如下: 1 #ifn...

2015-01-19 00:06:00

阅读数:1788

评论数:0

《coredump问题原理探究》Linux x86版6.4节虚函数

在上一节已经探究了类的成员变量的排列,现在看一下虚函数表和成员变量的排列及虚函数之间的排列. 先看一个例子: 1 #include 2 class xuzhina_dump_c06_s3 3 { 4 private: 5 int m_a;...

2015-01-14 20:45:46

阅读数:1156

评论数:0

《coredump问题原理探究》Linux x86版6.3节有成员变量的类coredump例子

在探究完类成员变量分布后,来定位一个coredump例子来实践一把: (gdb) bt #0 0x0804863c in xuzhina_dump_c06_s2_ex::print() () #1 0x08048713 in main () 看一下xuzhina_dump_c06_s2_e...

2015-01-13 21:57:02

阅读数:1209

评论数:0

《coredump问题原理探究》Linux x86版6.2节C++风格数据结构内存布局之有成员变量的类

上面一节已经探究出this指针的辨别,由this指针就可以看到类的内容。在这里,就由this指针来看一下类的成员变量是如何排列。 先看一个例子 1 #include 2 class xuzhina_dump_c06_s2 3 { 4 private: 5 ...

2014-11-30 10:13:08

阅读数:1243

评论数:0

《coredump问题原理探究》Linux x86版6.1节C++风格数据结构内存布局之无成员变量的类

在探究完C风格数据结构内存布局之后,接着探究C++风格数据结构内存布局。 虽然最简单的类是没有任何成员变量和成员函数,但由于没什么意义,不值得探究。在这里,就先探究一下没有任何成员变量和虚函数,只有成员函数的类。 先看一下例子: 1 #include 2 class xuzhina...

2014-11-25 21:22:27

阅读数:971

评论数:0

《coredump问题原理探究》Linux x86版5.9节C风格数据结构内存布局之联合体

在C语言中,联合体(union)有点像结构体那样,把不同类型的数据组织起来,但和结构体不大一样,在结构体各成员有各自的内存空间,一个结构体对象的总长度是各成员长度之和。而在联合体中,各成员共享一段内存空间,一个联合体对象的长度等于各成员中最长的长度。 由上面描述可知,联合体应该具备多面性,即在汇编...

2014-11-22 17:00:41

阅读数:1068

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭