GDB查看栈信息

本文介绍了栈在程序中的作用,如保存自动变量和函数调用信息。通过GDB调试C程序`sum.c`,展示了栈帧的创建、函数调用时栈的变化,包括保存参数、返回地址和自动变量。还探讨了栈溢出问题,如何通过`ulimit -s`调整栈大小以及使用GDB检查栈内容和调用轨迹。
摘要由CSDN通过智能技术生成

栈:是程序存放数据内存区域之一,特点是LIFO(后进先出)。

PUSH:入栈

POP:出战

使用场景:

1.保存动态分配的自动变量使用栈

2.函数调用时,用栈传递函数参数,半寸返回地址,返回值

代码sum.c

#include <stdio.h>      
#include <ctype.h>      
#include <stdlib.h>      
#define MAX  (1UL << 20)      
typedef unsigned long long u64;      
typedef unsigned int u32;      
u32 max_addend=MAX;      
u64 sum_till_MAX(u32 n)      
{          
	u64 sum;          
	n++;          
	sum=n;          
	if(n<max_addend)              
	sum+=sum_till_MAX(n);          
	return sum;      
}      
int main(int argc,char** argv){          
	u64 sum=0;          
	if((argc==2) && isdigit(*(argv[1])))              
	max_addend=strtoul(argv[1],NULL,0);          
	if(max_addend>MAX||max_addend==0){              
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值