首页 >>  正文

函数调用栈怎么看里面的值

来源:baiyundou.net   日期:2024-09-23

金融界2024年3月19日消息,据国家知识产权局公告,荣耀终端有限公司申请一项名为“一种进程的调用栈信息获取方法、电子设备及系统“,公开号CN117724827A,申请日期为2023年7月。

专利摘要显示,本申请实施例涉及内存管理技术领域,尤其涉及一种进程的调用栈信息获取方法、电子设备及系统,能够及时获取电子设备中目标进程的调用栈信息。方法应用于第一电子设备,该方法包括:接收来自第二电子设备的第一配置信息,第一配置信息包括目标进程的名称、第一内存的标识和第一预设值,第一配置信息用于获取目标进程的调用栈信息,调用栈信息用于反映目标进程调用内存分配函数的函数调用关系;响应于接收到第一配置信息,监控第一电子设备中运行的目标进程占用第一内存的大小;当目标进程占用第一内存达到第一预设值时,获取调用栈信息。

本文源自金融界

","gnid":"9ff4bb9049eda5f3e","img_data":[{"flag":2,"img":[]}],"original":0,"pat":"art_src_3,fts0,sts0","powerby":"pika","pub_time":1710832980000,"pure":"","rawurl":"http://zm.news.so.com/d0560e4c3f30cab368623857f1eb62ce","redirect":0,"rptid":"f6b7e02b1ba7f88c","rss_ext":[],"s":"t","src":"金融界","tag":[{"clk":"kdigital_1:内存","k":"内存","u":""},{"clk":"kdigital_1:金融界","k":"金融界","u":""}],"title":"荣耀公司申请进程调用栈信息获取专利,能够及时获取电子设备中目标进程的调用栈信息

叶卿该1187为什么说“函数的调用在计算机中是用堆栈实现的?” -
康录瑶19586551185 ______ 一层的调用不明显,但是你考虑一下多层的调用就容易明白了. 比如说,我在函数A中还要调用其他函数,那么这个时候先要把函数A一些变量的信息记录下来,就是存在栈中,然后再调用新的函数(也可以是自身).等A调用的函数运行完获得返回值时,会回到最初调用它的函数(也就是A),这个时候函数A可能还要继续运行,也可能直接就return了,无论哪种情况都需要把之前存在栈中的信息pop出来,否则一调用其他函数,A自己原先的变量数据就无法跟踪记录了.

叶卿该1187栈中的数据可以修改吗 -
康录瑶19586551185 ______ 当然是可以的,并且你不知不觉中已经在修改和使用了,比如函数调用开设的参数变量就是在栈中存放的,你可以修改它们的值,可以当成局部变量来使用.在函数中开设的变量也是开在栈中的.

叶卿该1187c语言:函数调用时,栈的问题——(有请高手高手高高手) -
康录瑶19586551185 ______ 必须出栈!aa 和 bb 和c 都是函数内部的局部变量,函数返回后就被释放,也就是在栈中没有了,返回后就剩下图中main()函数所对应的栈结构.栈只能够通过出栈来减少栈中数据的个数,从反面来讲,如果不出栈,funcA()函数返回后,栈指针还是指向c那,这肯定是不对的,因为函数返回后栈指针就得指向man()的栈结构了.

叶卿该1187求单链表的长度的递归算法(C语言格式) -
康录瑶19586551185 ______ 求单链表的长度函数名为linklistlength 单链表用结构体linklist表示 int linklistlength(linklist *head) { if(!head) return 0; return linklistlength(linklist *head->next)+1; }

叶卿该1187函数调用过程中栈到底是怎么压入和弹出的 -
康录瑶19586551185 ______ 这个可以用一个递归函数的过程来描述下 会比较形象 例如有递归函数1.void example(int x)2.{3. if(x == 0)4. return;5. example(x-1);6. printf(“%d\n”, x);7. } 这段程序编译一下运行结果 比如调用example(5) 压栈过程是5,4 , 3, 2, 1 输出,也就是弹栈...

叶卿该1187函数调用主要4步: 将参数压入堆栈 保存寄存器的值 保存返回地址值 跳转 前三步都是访问内存?? -
康录瑶19586551185 ______ 压栈是访问堆栈寄存器sp,保存返回地址,应该是pc寄存器 所有的数据都是在内存中读取的吧

叶卿该1187函数调用过程中,为什么必须ebp和%esp的值 -
康录瑶19586551185 ______ 我也是查找的,请别介意: 准备执行 在主程序中每次调用函数时,先依次把各参数以相反的顺序入栈; 然后call func_name, 这里call要做两件事: 一是把函数的返回地址入栈,二是让指令执行指针%eip指向函数开始处. 开始执行 现在函数要开始执行了,但它执行函数代码前还要做一点小事,首先把原来的基地缉尝光妒叱德癸泉含沪址寄存器%ebp值入栈,因为在程序执行中%ebp要另作它用, 接着堆栈指针%esp的值复制给%ebp, 此后在函数执行中%ebp一直保持不变,可以由此寻址获得函数参数.

叶卿该1187c语言如何将函数调用堆栈打印出来 -
康录瑶19586551185 ______ 可以直接用输出在函数内部调用时,把调用顺序打印出来. 一、一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2...

叶卿该1187求输出这个递归 感激不尽 -
康录瑶19586551185 ______ 从左到右为从栈底到栈顶findout(55)在函数调用栈中m的值:55, 30, 15, 10, 5栈S中:15, 5m为5时,函数调用栈递归结束.finding(5)无输出,返回5finding(10)输出10, 5.返回10.S的栈...

叶卿该1187怎么在VC里查看汇编输出?? -
康录瑶19586551185 ______ 你是想看变量的值变化值吧1.你先设几点断点2.用go(F5)跳到当前断点处,这时弹出一个调试窗口3.你可以在工具栏的空白处右键,选watch4.然后你可以从左侧的调试auto窗口中将关心的变量拖到这个窗口中,也可直接从代码当中拖进来.5.这...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024