记录一次软件异常调试的过程

我拉下git仓库中最新的代码,前端,后端。然后使用常规的命令npm run dev启动了vue项目。再启动好后台的服务。在浏览器中输入url,出现登陆页面。然后我再输入账户名密码。与往常不同,今天页面报错了。

500 Server Internal error.

最开始,我打开了浏览器开发工具。找到了vue发送请求的代码,debugger发现不出异常。

然后我想起被同事提起的postman,可以测试接口。我使用搜狗插件RESTer(类似postman,用于测试接口)中报错:

记录一次软件异常调试的过程

这是登陆页面,所以我打开了微服务中的系统服务,找到了登录接口,打了断点,debug一下,竟然不进这个代码。使用ctrl+H搜索“Value can not be null!”,所有文件中都没搜到。

因为没有执行系统管理包的代码,所以系统管理包下的控制台也没有报错信息。

然后瞄到了网关服务,想起使用RESTer测试系统管理模块的接口时输入过两个url。一个是包含网关服务的url,会先执行网关,网关会把url解析,去执行url对应的具体接口。另一个是直接访问系统管理服务的url,直接执行登录接口。

记录一次软件异常调试的过程

去网关服务的控制台,看到了“value must not be null!”。已经找到问题了。
找到报错信息中对应的代码,除了spring包中的代码,只有一个是公司自己写的代码。

debug后发现,原来是,网关服务接受请求信息,其中有一步是读取数据库配置表中的所有配置信息,获取一个字段的值。而我的配置表中没有这个字段。这个字段是用来防止url中包含sql信息,防止sql注入的。如果获取不到值就会执行下面这个方法。message内容就是"value must not be null!"
记录一次软件异常调试的过程
然后就去数据库中配置表里增加了这个字段。根据经验,随便设置了一个值。获取了值后,就正常登陆进去啦!