使用IntelliJ IDEA调试Spring WebFlux/Reader应用程序应用程序、IDEA、IntelliJ、Spring

2023-09-03 12:13:20 作者:短短长长

我正在使用IntelliJ Idea创建一个Spring WebFlux/Reader应用程序。IDEA的调试器显示了许多无用的行,如MonoDefer、MonoFlatMap等。有什么方法可以轻松跟踪堆栈吗?

推荐答案

在异步世界中,不幸的是堆栈跟踪失去了很多意义。这里您可以看到一个堆栈,其中显示了组成整个反应链的操作符(包括Spring框架在您的控制器中定义的操作符之上使用的操作符)。唯一的问题是它显示了链被触发(或"订阅")的位置,因为执行是延迟的,并且这是运行时唯一可见的路径...

对于正确的错误和堆栈跟踪,有一个.checkpoint()运算符可以在链中显式使用,以便捕获有关"程序集"(在代码中声明运算符链)的信息,以提供更多上下文。然后,它将显示为异常堆栈策略的一部分,并显示为受抑制的异常。

使用IntelliJ的新的异步调试器功能对我们来说也有点太难了,因为执行模型没有提供一对固定的"调度站点和执行站点":publishOnsubscribeOn等操作符用于在序列中间切换线程的Scheduler抽象意味着任意的"执行站点"(任意的ExecutorService、滚动自己的线程池、Thread,...)。

我鼓励您阅读http://projectreactor.io/docs/core/release/reference/#debugging

官方参考文档中有关堆栈跟踪和调试的内容