在进行嵌入式多任务系统软件开发,可能会出现堆栈溢出的问题,并且该问题可能是随机出现,因此调查较麻烦。借助keil 的数据断点功能,可以轻松找到产生堆栈溢出的位置。

在程序调试时,常规使用的断点是程序断点,本文提到的则是一种数据断点。以下将列出具体的调试方法。

1、任务的堆栈溢出一般是栈底溢出,在编译完成之后。如果堆栈通过固定地址分配,则通过查询keil 生成的.map获取栈底地址;否则需要在任务创建过程中分配的堆栈时获取栈底地址,将堆栈地址变量“pxNewTCB->pxStack”添加到变量监视区。

2、在获取到堆栈地址之后,在该变量上单击右键选择“数据访问断点”

3、在弹出的对话框中,选中“Write”选项,根据需要设置Count的值。如果stack堆栈在系统初始化时有初始化过程,则需要将该值Count值设置为2,否则一般设置为1即可以捕获程序意外设置该堆栈的位置。

4、断点设置好之后,就等着堆栈溢出发生了,如果程序意外设置了该数据内容,则程序会停下来,此时即可得到发生堆栈溢出的程序位置,进行展开调查了。

在上述操作中,如果堆栈地址通过固定分配。则通过map文件中的变量查询来获取该地址。在命令输入窗口输入命令即可以设置该数据访问断点。

bs write 0x20002000,1

更多断点的高级应用可以参考另外一篇博文

https://blog.csdn.net/guangod/article/details/99573665

Keil 调试之堆栈溢出调查相关推荐

  1. 关于KEIL的RTX 堆栈溢出问题

    关于KEIL的RTX 堆栈溢出问题 在MDK5下用RTX,之前用的好好的,这次出现了任务就堆栈溢出的问题,百度搜了一下,有说系统跑起来之前不能打开中断,而使能了microlib之后,系统是自动建好ma ...

  2. rust编程语言排名_Rust语言在堆栈溢出调查中排名最高

    rust编程语言排名 Rust在Stack Overflow的开发人员调查中连续第五年获得"最受欢迎的"编程语言的第一名,而Python从第二名滑落到第三名,仅次于TypeScri ...

  3. keil查看rtx rtos堆栈溢出

    在rtx rtos等单片机系统设计程序时可能会遇见堆栈溢出的情况,此时可以通过keil的自带工具进行定位哪个堆栈溢出. 前提 1.这个工具的适用前提肯定是在硬件仿真环境下,首先点击图中圈出按钮进入仿真 ...

  4. keil 调试 操作系统_调试操作系统:内存分配的经验教训

    keil 调试 操作系统 It began, as so many investigations do, with a bug report. 和许多调查一样,它是从一个错误报告开始的 . The n ...

  5. C语言再学习 -- Stack Overflow(堆栈溢出)

    参看:Stack Overflow(堆栈溢出) Visual Studio执行出现Stack Overflow,该怎么处理呢? 一.产生原因 Stack Overflow(堆栈溢出)是程序调试中比较麻 ...

  6. 堆栈溢出从入门到提高

    转自:http://www.jiaonan.net/html/2007/06/20070624034620915.htm 入门篇 2007-6-24 15:46:20 本讲的预备知识: 首先你应该了解 ...

  7. c++堆栈溢出怎么解决_栈溢出基础

    一. 基础知识 什么是缓冲区溢出 在深入探讨技术之前, 让我们先了解一下缓冲区溢出的实际内容.想象一个非常简单的程序, 要求你输入你的用户名, 然后返回到它在做什么.从视觉上看, 如下所示 注意到括号 ...

  8. window系统下的堆栈溢出 作者:ipxodi

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  9. c# 溢出抛异常_C#捕获堆栈溢出异常

    C#捕获堆栈溢出异常 我得到了一个抛出堆栈溢出异常的方法的递归调用. 第一个调用被try catch块包围,但没有捕获异常. 堆栈溢出异常是否以特殊方式运行? 我可以正确捕获/处理异常吗? 注意:如果 ...

最新文章

  1. mbed列--基于飞思卡尔FRDM KL25Z鼠标设计的高速实现
  2. 开发日记-20190501 关键词 汇编语言(启动) 基于x86处理器
  3. UA MATH564 概率论 Dirichlet分布
  4. Python基础概念_13_常见关键字
  5. C. The Meaningless Game
  6. idea工具debug断点红色变成灰色
  7. 下拉选择_在管理Excel中实现联动下拉选择
  8. 安装rlwrap 的简单方法
  9. Docker JFrog Artifactory 7.27.10 maven私服(搭建篇)
  10. (49)System Verilog 类中数组长度约束
  11. 两个not exists_分享两个冷门但又超实用的 Vim 使用技巧!
  12. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(一、人工智能绪论)
  13. 虚拟机Ubuntu 挂载硬盘
  14. postman9.12.2汉化包
  15. 读《看见》第一章观后有感
  16. MQ系列SpringBoot快速整合RabbitMQ
  17. 《蜘蛛侠3》5月2日中国提前上映
  18. 【网课视频提取ppt】【原创好用】如何自动提取视频中的PPT画面?网课视频提取ppt教程
  19. 判断串口通信是否正常c语言,串口通信测试方法
  20. 各系统安装NetFrameWork3.5 安装

热门文章

  1. linux模拟机下载软件,KVM虚拟机下载|Linux KVM虚拟机 V1.2.0 官方版 下载_当下软件园_软件下载...
  2. 京东获得JD商品详情 API
  3. ActiveMq-关于Spring集成ActiveMq的连接池报错
  4. Ubuntu上python打包为可执行文件方法
  5. ssm+Vue计算机毕业设计养老院管理信息系统(程序+LW文档)
  6. Json RequestBody日期相差8小时及首字母大写问题
  7. 海康工业相机SDK + OpenCV实例(4):相机参数设置详解
  8. 使用pyqt5开发海康工业相机
  9. 换个角度看进化论(二)
  10. Python编程无师自通--编程概论