在做嵌入式产品常见死机原因有很多种,其中之一就是strlen函数引起的。这个函数大家不会陌生,学c语言最基本的函数了,但在实际使用中偶尔不小心还是可能会引起段错误造成死机的。为什么呢?

   函数原型:unsigned int strlen(char *s);

也就是输入一个字符串函数指针,判断这个字符串有多长。当你不小心输入了一个空指针的时候,错误就来了。很多时候我们都知道使用指针之前都判断一下这个指针是否是空指针,在开发中往往有时图省事或者自认为这里不判断也不会有事,盲目自信了一把!因此,我们还是得养成良好得习惯,使用之前还是要验证一下合法性。

段错误示例如下:

[2021/9/28 18:34:42] NMI
[2021/9/28 18:34:42] msp: 200087b8  psp: 3832dce8  stack(reg0): 200087b8  reg4: 20008798
[2021/9/28 18:34:42] r0: 00000000  r1: 00000001  r2: e000ed00  r3: 80000833
[2021/9/28 18:34:42] r4: 00000000  r5: 00000000  r6: 7ffffff8  r7: 3832de00
[2021/9/28 18:34:42] r8: 00000000  r9: ffffffff  r10: 2000fd24  r11: 00000001
[2021/9/28 18:34:42] r12: 00000030  r14(lr): 18124c19  r15(pc): 18124c18  xPSR: 61000033
[2021/9/28 18:34:42] The exception call: 200087b8
[2021/9/28 18:34:42] The exception end: 20008800
[2021/9/28 18:34:42] PC call-0: 18124c18: f7ff fffe 4770 460b 0781 d503
[2021/9/28 18:34:42] PC call-1: 18124c14: f000 f828 f7ff fffe 4770 460b
[2021/9/28 18:34:42] The normal call: 3832dce8

[2021/9/28 18:34:42] PC call_normal-0: 1811a076: 42d3 d100 bd10 f813 4d01 f801
[2021/9/28 18:34:42] PC call_normal-1: 1812060e: f7f9 fd21 68a3 1b9b 60a3 6823
[2021/9/28 18:34:42] PC call_normal-2: 1812060e: f7f9 fd21 68a3 1b9b 60a3 6823
[2021/9/28 18:34:42] PC call_normal-3: 18120582: 0000 e92d 47f0 688e 429e 4682
[2021/9/28 18:34:42] PC call_normal-4: 1811ad2c: 47c0 3001 d0aa 6823 079b d413
[2021/9/28 18:34:42] PC call_normal-5: 18120582: 0000 e92d 47f0 688e 429e 4682
[2021/9/28 18:34:42] PC call_normal-6: 1811a4ac: 0020 6c68 004c 6665 4567 4746
[2021/9/28 18:34:42] PC call_normal-7: 101667d4: 7325 2500 3a73 6425 7325 2f00

嵌入式常见的段错误死机原因之一strlen函数相关推荐

  1. Linux常见死机原因

    Linux常见死机原因 在排除了硬件故障/firmware版本/BIOS等等问题之外, Linux死机通常可能碰到如下几种情况 1, 如果你的Linux死机的时候控制台上有乱七八糟的字符.恭喜你,这种 ...

  2. java 主动抛出 段错误_段错误产生的原因~

    原文:https://blog.csdn.net/qq_29350001/article/details/53780697 一.什么是段错误? 一旦一个程序发生了越界访问,cpu 就会产生相应的保护, ...

  3. linux程序运行段错误,Linux下的段错误产生的原因及调试方法

    Linux下的段错误产生的原因及调试方法 简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址. 一般来 说,段错误就是指访问的内存超出 ...

  4. 电脑死机原因、和预防电脑死机技巧!!

    1.电脑死机原因? 2.如何预防电脑死机? (1)先介绍电脑死机原因! 无法启动系统,画面"定格"无反应,鼠标.键盘无法输入,软件运行非正常中断等.尽管造成死机的原因是多方面的,但 ...

  5. 如何查找 Linux 死机原因?

    如何查找 Linux 死机原因? Linux 内核虽然号称"不死族",几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的.转载自 deleak.com 因为 Linux ...

  6. Linux环境下段错误的产生原因及调试方法小结

    From:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基 ...

  7. [转]Linux环境下段错误的产生原因及调试方法小结

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的"段错误"(Segme ...

  8. win7系统未响应卡住_win7程序未响应经常死机原因及处理方法

    在使用win7系统的同时,也有很多用户提出了不同的系统问题,win7程序未响应经常死机也是其中的困扰之一吧,出现这种情况虽然有点麻烦,但是还是可以解决的,下面就由学习啦小编跟大家分享一下解决方法吧,希 ...

  9. Linux环境下段错误的产生原因及调试方法

    1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址.访问了系统保护的内存地址.访问了只读的内存地址等等情况.这里贴一个对于" ...

最新文章

  1. 线性布局上的一个小错误
  2. 每秒改变一次背景颜色以及由此引发的一些有趣的小事情(.net方向)
  3. 回填用土好还是砂石料好_养羊喂撒粉料好还是颗粒料好?
  4. java接口 泛型_java 泛型接口示例
  5. 【Linux系统编程】 浅谈标准I/O缓冲区
  6. jQuery的无new构建
  7. maskrcnn还可以加网络吗_桃子加蜂蜜可以榨汁吗?桃子和蜂蜜可以一起吃吗?原来可以这样吃...
  8. CF1042F Leaf Sets (贪心+树上构造)
  9. P5732 【深基5.习7】杨辉三角(python3实现)
  10. c/c++ 变量作用域
  11. Flutter学习之事件循环机制、数据库、网络请求
  12. [渝粤教育] 云南大学 中国文化英语桥 参考 资料
  13. 方差、协方差和皮尔森相关系数
  14. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第一章
  15. 基于脉动阵列实现矩阵卷积(FPGA)
  16. 用不同的用户名和密码登录网络上的共享文件夹
  17. sim808模块收发送短信
  18. java代码---------陈勇老师的
  19. 【004 关键字】extern “C“的作用是什么?
  20. FIREBIRD使用经验总结

热门文章

  1. hulu dpp_您可以立即流式传输的10个最佳Hulu原创电视节目(2020年4月)
  2. Java项目:校园运动会管理系统(java+JSP+Servlet+JavaBean+Mysql)
  3. 查理芒格最喜欢的《拿来主义》
  4. 什么是区块链?区块链的核心技术包括哪些?
  5. line-height和vertical-algin
  6. iPhone SE Plus:处理器依旧采用A13芯片?
  7. request和requestScope的区别
  8. 雷军抖音直播破2亿,品牌看懂了什么
  9. 14种不适合创业的人:创业有风险,入行需谨慎
  10. i12蓝牙耳机充电仓怎么看充满电_HIK真无线蓝牙耳机,平价并不差