现象
在dreamview里面,打开Navi_planning
或者Planning
模块的开关,开关运行一段时间后会自动关闭并重新开启。
定位过程
查看dreamview代码,模块开关定义在modules/dreamview/conf/hmi.conf
modules {
key: "navigation_planning"
value: {
display_name: "Navi Planning"
supported_commands {
key: "start"
value: "supervisorctl start navigation_planning &"
}
supported_commands {
key: "stop"
value: "supervisorctl stop navigation_planning &"
}
}
}
再在代码中搜索navigation_planning
,发现modules/tools/supervisord/dev.conf
如下:
[program:navigation_planning]
command=/apollo/bazel-bin/modules/planning/planning --flagfile=/apollo/modules/planning/conf/planning_navi.conf --stderrthreshold=3 --use_navigation_mode
autostart=false
numprocs=1
exitcodes=0
stopsignal=INT
startretries=10
autorestart=unexpected
redirect_stderr=true
stdout_logfile=/apollo/data/log/planning.out
手动执行命令/apollo/bazel-bin/modules/planning/planning --flagfile=/apollo/modules/planning/conf/planning_navi.conf --stderrthreshold=3 --use_navigation_mode
出现错误Illegal instruction (core dumped)
,出现core dumped错误就要寻找日志。
寻找core dump日志:先用命令ulimit -c
查看core日志是否开启,显示0为关闭,unlimited
为开启。如显示0则执行命令ulimit -c unlimited
。然后到/proc/sys/kernel
目录下cat文件core_pattern
。发现日志路径/apollo/data/core/core_%e.%p
,根据路径和进程号找到日志core_planning.1193
。
日志找到,用gdb解析日志,命令gdb 执行程序 core日志(core.进程号)
ubuntu@in_dev_docker:/apollo/data/core$ gdb /apollo/bazel-bin/modules/planning/p
lanning core_planning.1193
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.3) 7.7.1
Copyright (C) 2014