我的局面是,在线服务正在运行,每天我都能找到一些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,但是如果使用与我自己或wrk或ab的200
请求相同的查询数据来请求,它会返回500
并更正响应数据。
我不知道如何调试此错误。
关于api调试的任何建议?
非常感谢!
答案 0 :(得分:2)
处理错误时,可以使用:
错误。(* errors.Error).ErrorStack()
返回堆栈跟踪。这样一来,您可以获得在某些情况下您的API会获得索引超出范围错误的行。