我的连线情况是,在线服务现在正在工作,每天我都可以找到一些500错误报告,如下所示:
2018-12-19 00:00:01 [ERROR] path[/vplay/getIdsInfo/?type=vlist&ids=31105228] err[runtime error: index out of range] stack[
goweb.(*RouterTab).ServeHTTP.func3.1:/home/tanxiaolong/golib/src/goweb/router.go:352
runtime.call64:/usr/local/go/src/runtime/asm_amd64.s:574
runtime.gopanic:/usr/local/go/src/runtime/panic.go:505
runtime.panicindex:/usr/local/go/src/runtime/panic.go:28
models.(*VplayModel).AssembleData:/home/tanxiaolong/golib/src/vplay/models/vplay.go:757
controllers.(*VplayController).GetIdsInfoAction:/home/tanxiaolong/golib/src/vplay/controllers/vplay.go:652
runtime.call32:/usr/local/go/src/runtime/asm_amd64.s:573
reflect.Value.call:/usr/local/go/src/reflect/value.go:447
reflect.Value.Call:/usr/local/go/src/reflect/value.go:308
goweb.(*RouterTab).ServeHTTP.func3:/home/tanxiaolong/golib/src/goweb/router.go:370
runtime.goexit:/usr/local/go/src/runtime/asm_amd64.s:2361] (goweb/router.go:353)我可以通过日志查找哪个api,但如果使用与500请求相同的查询数据请求,则返回500和正确的响应数据。
我不知道如何调试这个bug..。
对api调试有什么建议吗??
非常感谢!
发布于 2018-12-19 04:07:49
在处理错误时,可以使用:
err.(*errors.Error).ErrorStack()
返回堆栈跟踪。这样,您就可以得到API在某些情况下获取超出范围错误索引的行。
https://stackoverflow.com/questions/53844366
复制相似问题