佚名通过本文主要向大家介绍了mdk,keil mdk,mdk下载,keil mdk 5.0破解,mdk5.0安装教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:MDK有没有类似于VS的函数调用堆栈信息?
描述:
但我就想在某个一定会用到的函数前面搞清楚运行流程,回想起VS上支持函数调用堆栈,可以看到在指定的函数前面运行时函数调用的全部流程。但MDK只能记录当前的函数调用层,之前调用并退出的函数,这个信息没有出现在call stack 中。
我需要的是,之前只要调用过的函数,然后退出了那个函数,这些信息也要有。
不知道是MDK不支持,还是我的设置的哪不对,熟悉这方面的大大,请指教!
解决方案1:
是在MDK里面实现的
记得是在linker下面添加--info=stack 可以试试 解决方案7:
描述:
VS 调试函数调用堆栈Debugcall stack
我这里想要查看代码中的函数调用流程,因为其中用到了回调函数,带函数指针的结构体,而且是多层的,看得代码看得晕了。但我就想在某个一定会用到的函数前面搞清楚运行流程,回想起VS上支持函数调用堆栈,可以看到在指定的函数前面运行时函数调用的全部流程。但MDK只能记录当前的函数调用层,之前调用并退出的函数,这个信息没有出现在call stack 中。
我需要的是,之前只要调用过的函数,然后退出了那个函数,这些信息也要有。
不知道是MDK不支持,还是我的设置的哪不对,熟悉这方面的大大,请指教!
解决方案1:
默认情况下 ,MDK会将每个函数调用,中断等使用的堆栈信息保存到:工程名.htm中,你可以用浏览器查看这个文件来获取堆栈使用的详细情况.
文件开始会告诉你最大堆栈使用是在哪个函数,这个函数下面调用了哪些函数等
需要说明的是,有些堆栈消耗需要运行时才能得到,所以这个值只是一个堆栈使用最小值,你必须保证设置的堆栈要大于这个值.
我也想学学。
解决方案3:回调函数如果不是跨线程调用,仍然是可以使用F11,一步步往前看,如果是跨线程,那只能在回调函数的入口处设置断点
解决方案4:这招真不会!!!
解决方案5: 那个最长的stack调用,MAP文件里能找到的
如果DEBUG下的CALL STACK就只有这样的了
是在MDK里面实现的
记得是在linker下面添加--info=stack 可以试试 解决方案7:
没用过这个功能
以前看堆栈的信息 能看到函数之间的调用流程 如下:
Image Stack Usage Information.
Maximum stack usage for Image.
Maximum Stack Usage for App_TaskStart 0x3f8 bytes.
Call chain for maximum stack usage:
App_TaskStart => init_card => ReadAndSaveSpDat => fopen => _sys_open => __sys_open => fat_find => fat_find_dir => create_entry => check_name => search_for_name => frec_pos_set => set_next_clus => cache_fat