如何在golang中调试特定的api?

时间:2018-12-19 03:56:16

标签: api debugging go

我的局面是,在线服务正在运行,每天我都能找到一些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调试的任何建议?

非常感谢!

1 个答案:

答案 0 :(得分:2)

处理错误时,可以使用:

  

错误。(* errors.Error).ErrorStack()

返回堆栈跟踪。这样一来,您可以获得在某些情况下您的API会获得索引超出范围错误的行。