问题现象:control node(订阅串口node的消息)开启后,再开串口读写的node,control node就会报错“段错误”然后死掉。

网上大概搜了一下,大多说是指针指向或者内存方面的原因。


用rostopic pub工具手动给control node发送topic,进行调试

中途在control node程序中加入调试信息打印输出语句后,重新编译,又提示一堆 时钟不一致的warning ,但最后编译也显示到100%。

然而重新编译完之后,运行control node,并没有该有的打印信息,而且编译过程也没出现绿色的打印信息(一般编译一个改动过的源文件会出现这个),感觉是没编译产生新的可执行文件,还是运行的旧的可执行文件。 也就是时钟不一致warning,导致重新编译没起作用。

然后进入catkin_ws,执行 find ./ -type f |xargs touch

之后再重新编译,编译控制台出现了绿色调试信息打印,再运行程序,就都好了。


时钟不一致,估计是树莓派直接断电而不是执行关机操作导致的。

查了一下,linux系统一般有real-time clock (RTC)硬件时钟,和系统时钟两个。然而树莓派设计的时候好像没有放硬件时钟。

Real-time clock( Wikipedia)

一个独立的硬件(芯片),一般用纽扣电池或超级电容供电

时钟不一致为什么会导致编译不生效,又导致节点运行 段错误?

偶然因为“树莓派直接断电导致数据记录文件未保存”的问题,看到下面这个,是否存在一定关系呢

Linux 读写文件时,异常断电或程序异常中止导致文件出错、损坏

程序运行过程中,有读写配置文件保存当前位置信息的操作。在程序运行过程中突然断电,或者异常终止程序,就会出现配置文件内容出错(内容清空)或者文件直接损坏而无法打开的情况。文件损坏时,可能报出segmentation fault的错误,以致程序没法正常运行。

树莓派 ROS 段错误相关推荐

  1. ROS/c++常见段错误以及排查

    0. 前言 在C++编程中,我们经常会发现段错误这类问题,而这类问题经常是指访问的内存超出了系统所给这个程序的内存空间.一般是随意使用野指针或者数组.数组越界等原因造成的.段错误是指访问的内存超出了系 ...

  2. ros中启动rviz显示段错误,核心以转储问题

    ros中启动rviz显示段错误,核心以转储问题 运行命令 $ rosrun rviz rviz -d rospack find turtle_tf/rviz/turtle_rviz.rviz 显示 解 ...

  3. [Ubunut] c++段错误调试工具gdb的使用方法

    1.在cmakelist中 加入 "-g" set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -g -march=nat ...

  4. linux执行命令段错误,Linux运行fortran程序 出现段错误(segmentation fault)

    在Windows下编译运行fortran程序时,没有问题 ,运行时出现堆栈错误,只要在CVF里修改一下扩大内存设置: MAIN MENU: Project ===> Setting ===> ...

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

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

  6. 空指针,段错误,这场面试我栽倒在这里了!

    作者 | 李肖遥 来源 | 技术让梦想更伟大(ID:gh_f7effb2fbc1c) 面试官:满头的汗的,来面试的路一定很远吧? 还好还好,骑车不到俩小时 面试官:来先喝杯水,咱们面试不急,边喝边聊 ...

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

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

  8. 什么是core dump linux下用core和gdb查询出现段错误的地方

    什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-31932 ...

  9. Linux下利用backtrace追踪函数调用堆栈以及定位段错误【转】

    转自:https://www.linuxidc.com/Linux/2012-11/73470p2.htm 通常情况系,程序发生段错误时系统会发送SIGSEGV信号给程序,缺省处理是退出函数.我们可以 ...

最新文章

  1. C++中最好不要在构造函数和析构函数中调用虚函数!!!
  2. php性能分析工具 - xhprof的安装使用
  3. python 字典+列表集合+文件读取
  4. [MATLAB调试笔记]Possion方程求网格点电场强度
  5. mysql 唯一记录_mysql选择唯一记录
  6. 新书榜TOP 20占了17位!榜单里有哪些值得入手的技术新书?
  7. [ROS]1 小乌龟
  8. unix环境高级编程——UNIX体系架构
  9. micrium ucprobe使用笔记
  10. OrCAD之Design Resources的文件导入新的.dsn文件后,旧的。dsn文件如何去除?
  11. 如何获取未安装apk应用的包名、应用名以及版本信息等
  12. 百度地图移动端https 问题解决记录,也许是这个问题
  13. 调用企查查上的接口,实现通过公司名称查询公司列表
  14. 用java编写进制转换器_JAVA 简单进制转换器
  15. 极客创新大赛|微创机器人号探索飞船即将启航
  16. 图像识别技术,目前主要应用于哪些领域?
  17. 【解决方案 二十六】DateGrip一键生成DML语句用于上线
  18. 入坑slam,一位博士小姐姐的科研和成长分享(考研+读研+读博)
  19. 深度解读阿里巴巴云原生镜像分发系统 Dragonfly
  20. 听说你的程序又双叒叕乱码了

热门文章

  1. ORA-25155: NATURAL 联接中使用的列不能有限定词
  2. 贵州高二会考计算机考试题,20167月贵州普通高中学业水平考试会考试题
  3. C/C++中strlen(),strcpy(),strcat()以及strcmp()的代码实现--学习笔记
  4. PhpStorm升级后调用某些类提示phpstorm Unhandled exceptions
  5. u-boot2011.09 u-boot.img 的流程跟踪
  6. Exchange如何将邮件转发给外部邮件地址
  7. 设置user-agent骗过服务端安全检查
  8. 去掉警告:PerformSelector may cause a leak because its
  9. 更改域控制器的计算机名
  10. 给wmnp升级php和nginx的方法