- 博客(6)
- 收藏
- 关注
原创 gdb堆栈被破坏时的定位方法
gdb堆栈被破坏时的定位方法前几天碰到一个崩溃问题,利用coredump查看崩溃堆栈信息时,却发现堆栈被破坏了(gdb) bt#0 0x0000000f55555186 in ?? ()#1 0x0000000000000003 in ?? ()#2 0x0000000e00000000 in ?? ()#3 0x0000000000000000 in ?? ()不过正好还可以利用栈帧和寄存器的信息继续去定位崩溃原因,这里简单做下分享用到的一些命令和知识gdb的x命令x命令是用于
2021-12-09 00:10:21
3852
2
原创 什么是栈帧
栈帧浅析什么是栈帧引用百度百科中的解释:栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。函数的每次调用,都有它自己独立的栈帧。栈帧中维持着函数调用所需要的各种信息,包括函数的入参、函数的局部变量、函数执行完成后应该返回到哪里等。运行时栈栈帧使用了栈这一数据结构,达到了后进先出(First In Last Out)的内存管理原则。不管是插入数据还是删除数据,都是在栈顶进行的。x86-64的栈由高地址向低地址增长,寄存器rbp指向当前栈帧的底部(高地址),寄存器rsp指向当前
2021-11-29 23:42:59
9670
原创 C++20尝鲜-协程(一)
C++20尝鲜-协程(一)什么是协程参考[cppreference](https://zh.cppreference.com/)的解释如下:A coroutine is a function that can suspend execution to be resumed later. Coroutines are stackless: they suspend execution by returning to the caller and the data that is required to
2021-11-27 23:29:34
1425
原创 C++四种强制类型转换
什么是显示转换有时我们希望显式地将对象转换为另外一种类型。例如,如果想在下面的代码中执行浮点数除法:int i,j;double slope = i/j;就要使用某种方法将i/j的结果显示地转换为double。这种方法称作强制类型转换。C风格的强制类型转换C风格地进行强制类型转换包含两种形式:type(expr);(type)type;C风格的强制类型转换从表现形式上来说不那么清楚明了,一旦出现问题,追踪起来比较困难。C++风格的强制类型转换C++风格的强制类型转换具有如下形式:
2021-11-25 00:32:33
6164
1
原创 auto类型推导
auto的作用auto是我在编码中经常使用到的C++11新特性之一,主要用于变量的自动类型推导,如auto num=3,则推导出num的类型为int32_tauto的优势相较于原始的显式类型去声明变量类型,auto的优势有以下几点:auto变量一定要被初始化,可以避免变量忘记初始化// auto i; // error: declaration of 'auto i' has no initializerauot i=1;
2021-11-25 00:27:20
1101
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人