当前位置: 首页 > news >正文

企业备案网站内容制作手机网站什么软件

企业备案网站内容,制作手机网站什么软件,集团公司网站欣赏,广州建筑设计公司一.在执行的智慧中控项目的时候#xff0c;喊语音模块唤醒(小欣小欣)的时候遇到了#xff1a;Segmentation fault 段错误 二.遇到段错误#xff0c;一般是以下情况#xff1a; “Segmentation fault”#xff08;段错误#xff09;是Linux系统中常见的程序异常终止信号。…一.在执行的智慧中控项目的时候喊语音模块唤醒(小欣小欣)的时候遇到了Segmentation fault 段错误 二.遇到段错误一般是以下情况 “Segmentation fault”段错误是Linux系统中常见的程序异常终止信号。它通常发生在程序试图访问一个未分配给它的内存区域或尝试以不允许的方式访问内存时。以下是一些可能导致段错误的常见原因 空指针解引用如果你的程序试图通过一个空指针访问数据这将导致段错误。 数组越界当你试图访问数组的一个不存在的位置时例如数组大小为10而你试图访问第11个元素。 野指针指向已经释放了的内存空间的指针被称为野指针使用这样的指针可能会导致段错误。 栈溢出当函数调用层次太深或者局部变量占用空间过大导致栈空间耗尽时会发生栈溢出。 多线程问题在多线程环境中如果两个或多个线程同时访问并修改同一块内存而没有适当的同步机制可能会导致段错误。 非法地址操作如向只读内存写入数据等。 内存分配失败后继续使用当malloc()、calloc()等函数返回NULL值表示内存分配失败时如果程序没有检查这个返回值而直接使用分配的内存就会发生段错误。 结构体或对象的成员访问当尝试访问一个未正确初始化的对象的成员时也可能引发段错误。 解决段错误的方法包括但不限于 使用调试器如GDB来定位错误发生的准确位置。检查所有指针是否都被适当地初始化并且在使用前确认它们不是NULL。检查数组边界确保不会越界访问。对于动态内存管理确保释放内存后不再使用该内存。在多线程应用中确保对共享资源的操作进行了适当的同步处理。 三.我如何解决这里使用GDB去调试 1. 首先使用GDB去运行项目 用gdb去调试一般就这个步骤 ①在gcc后面加-g编译 ②在前面加gdb去执行 ③遇到gdb的时候按r运行再次遇到继续按r ④后面就会看到输出的结果和程序奔溃的地方哪个文件哪行代码。 2. 回到项目找到发生错误的地方 ①一般段错误就是指针的问题经常要么是使用了空指针要么就是指针越界了。 这里发现cur_gdev也是个指针cur_gdv指针被拿去做了一些操作被拿去做了if判断。 并且这里看到cur_gdev一开始赋值是NULL那这里就应该去看看cur_gdev后续是否有被到赋值。 如果cur_gdev没有被赋到值又被拿去做了其它其它操作就会出现段错误那就是使用一个指向空的指针去跟其它的数据做if判断就会出错。 所以这里开始怀疑cur_gdev是不是没赋到值 ②所以这里找到cur_gdev被赋值的代码92行看看cur_gdev有没有被赋到值。 在cur_gdev被赋值的代码下面加上一条printf语句打印一串数字93行。 执行看看会不会输出这行数字。如果输出这行数字说明程序跑到这个printf语句了那也就说明cur_gdev被赋值的语句也跑到了说明cur_gdev被赋到值了。 ③用GDB执行结果如下 没看到输出我们加的那行代码88888888888代码93行 3.继续去调试 ①在输出888888的代码后面加\n换行符试试printf(“88888888888888888888\n”); ②老样子使用gdb编译、执行、按r运行 ③老样子在发生错误的地方唤醒语音模块喊小欣小欣 ④结果如下看到了我们加的那行代码88888888888代码93行。说明cur_gdev被赋值的语句92行程序是有执行到的 4.继续调试在有怀疑的地方继续加printf输出语句 ①那cur_gdev被赋值的语句确实是有被执行到的那我们在点进去看看给cur_gdev赋值的函数find_gdevice_by_key()点进去看看cur_gdev有没有可能会被赋值为NULL。 cur_gdev find_gdevice_by_key(phead_gdev,recv_msg-buffer[2]); ②看到find_gdevice_by_key()函数里面这段代码的意思是 如果链表头是空就返回空NULL 否则就去遍历链表 遍历完链表都没有找到需要return的那个p我们就返回空NULL 发现确实有两个会返回return那cur_gdev确实是有可能会被赋值为空NULL的。 所以我们给每个return前面加个printf输出语句记得后面加\n 然后继续唤醒语音模块(喊小欣小欣) 看看最后会打印出哪个printf输出语句那就能侧面知道return的是什么给cur_gdev ③看到打印的是77777那说明后面会return的是NULL空值给cur_gdev。证明了我们的猜想。 4.继续调试在有怀疑的地方继续加printf输出语句 ①回到前面所以刚刚唤醒语音模块(喊小欣小欣)的时候cur_gdev确实有可能被return返回一个空值NULL的那这里却没有对cur_gdev是NULL的时候做什么处理导致后面cur_gdev直接被拿去做if判断了出现了段错误。 ②那这里加个如果cur_gdev是NULL的时候的处理看看继续验证猜想cur_gdev是不是真的NULL。 ③结果如下 看到输出1111111111再次证明cur_gdev确实是NULL。然后后面就被拿去做操作了所以是空指针操作出现的段错误。 5. 所以按实际需要给cur_gdev做空指针处理如果cur_gdev为NULL就怎么怎么样。 我这里是给如果cur_gdev是空指针我就直接退出线程。
http://www.dnsts.com.cn/news/41464.html

相关文章:

  • 竹制品网站怎么做成都营销型网站建设公司
  • 找回老网站报考网页
  • 南丰网站建设专业建设验收网站
  • 魔方的网站凯里州建公司简介
  • 自适应 网站开发龙岗网站优化培训
  • 张家港做网站广告公司做网站要素
  • 免费做自我介绍网站网站建设要多久
  • 如何做衣服销售网站简约wordpress模板
  • 什么网站能接工地做网站空间和数据库
  • 专做酒的小程序网站wordpress里的导航用什么位置
  • 网站备案主体狼雨seo网站
  • 住房城乡建设厅网站wordpress又拍云插件
  • 网站销售怎么样的手机上怎么建立公众号
  • 网站建立数据库福田企业网站推广哪里好
  • 做网站要学哪些成都公司注册费用
  • 购物网站建设案件网站开发w亿玛酷1流量订制
  • 网站建设湖北品划网络做网站
  • 摄影作品展示网站flash全站源码php网站开发实例教程百度
  • 普通网站能不能用vue做几个小功能如何找企业联系做网站
  • 云南住房和城乡建设部网站.net 网站 源代码
  • 珠海做企业网站a站是指哪个网站
  • 论述网站建设的主要内容国内看netflix的vps
  • 成都网站建设快速服务米各庄有做网站的吗
  • 学校网站建如何查看网站备案信息
  • cms 网站模板wed网站开发是什么
  • 绍兴h5建站做一下网站需要什么
  • 网站建设王滨1983邯郸专业做网站哪里有
  • 网站订单系统模板下载太原关键词优化报价
  • 哈尔滨专业做网站公司wordpress 漏洞 修复
  • 河北住房和城乡建设网站html导入wordpress