idea seata tcc项目debug启动程序的时候出现SignatureParser的 java.lang.ArrayIndexOutOfBoundsException异常。在之前的idea seata at模式的时候,debug功能是正常的,run功能也是正常的。
以debug方式启动,会出现异常和断点,代码执行被中断,以run正常运行方式启动时,程序可以正常启动。在增加tcc模式后,使用了java代理,初步判断,是该原因引起。从异常发生的位置来看,是jdk的代码中,怀疑和业务代码无关。
代码位置:
异常信息:
选择从该断点继续执行,后续会重复在此位置中断。即使不断继续执行,很快又会遇到其它的异常断点,导致程序没有办法调试。
选择菜单"Run"-->"View Breakpoints"进行查看断点。
从断点界面,可以看到java.lang.RuntimeException启用。
取消java.lang.RuntimeException前面的选择。
再次以debug启动,程序可以调试方式运行了。
代码断点和调试功能也正常了。
综合上述信息来看,tcc模式中使用了java代理以后,对idea针对debug模式设置的默认断点规则有一定的影响,此时不适合针对java.lang.RuntimeException设置断点。通过修改配置,重新以debug运行的实际效果来看,也印证了这一点。