TSINGSEE青犀视频行人检测功能分割数组报错panic: runtime error问题排查

Posted TSINGSEE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TSINGSEE青犀视频行人检测功能分割数组报错panic: runtime error问题排查相关的知识,希望对你有一定的参考价值。

我们开发的行人检测功能仍在园区测试中,目前正在进行进行人数的编译,简单说就是一个分析总客流的功能。我们主要的实现方式是先通过python程序将每天的时间段(毫秒级)的行人制作一个数据库,人数和人数ID都保存到数据库。已被分析,如找出0人的时间段和在0人之间的总人数。

在分割0人时,出现超出数组的范围。

错误日志:“panic: runtime error: index out of range [-1]
Goroutine 115 [running]:
Gitee.com/xxxxx”

先找到对应的错误信息点,再使用调试工具进行调试。从上面的图中我们可以看到一个函数:“FindDatabasePersons”:

此函数就是从历史的数据库查找符合条件的人数用于替换,进到此函数里面有个“DoSplitZeroPerson”函数,主要错误在此处。

yMd := fmt.Sprintf("%d_%02d_%02d", y, m, d)
if !IsTSnap(yMd, sh, eh) { //首先查找数据库,把数据保存,下次就不用在查找数据库,节省时间
   if IsTable(yMd) {
      base := QuerySqlTableToWhere(yMd, sql)
      newBase := DoSplitZeroPerson(base, 2 * 1000)
      for i:=0;i<len(newBase)-1;i++ {
         sql.StartTimestamp = newBase[i].Timestamp
         sql.EndTimestamp = newBase[i+1].Timestamp

主要问题是最后的if判断,是有问题的。

所以问题最后一个if判断中,将newBase这个数组里面的长度减去1,如果newBase数组没有值是一个空的数组,那么减去1,此数组就会取下标为负数。取负数下标是有问题的,所以上面的报错是有个”[-1]”。要修改也很简单,在加个if判断即可:

以上是关于TSINGSEE青犀视频行人检测功能分割数组报错panic: runtime error问题排查的主要内容,如果未能解决你的问题,请参考以下文章

TSINGSEE青犀视频行人检测集成票务系统读取票务系统数据库为空的问题

TSINGSEE青犀视频启动行人检测功能程序出现启动两次是什么原因?

TSINGSEE青犀视频景区行人检测功能如何实现休息日的分析

TSINGSEE青犀视频行人检测后端代码出现保存json数据错误的处理

TSINGSEE青犀视频行人检测对接景区票务系统请求数据库优化时间长问题

TSINGSEE青犀视频景区行人检测分析人流数据程序仅在网页开启时生效的优化