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

发布于 2018-07-02 18:16:17
不幸的是,在异步世界中,堆栈跟踪失去了很多意义。在这里,您可以看到一个堆栈,其中显示了组成整个反应链的运算符(包括Spring Framework在控制器中定义的运算符之上使用的运算符)。唯一的问题是它显示了链被触发(或“订阅”)的位置,因为执行是惰性的,并且这是运行时唯一可见的路径……
对于正确的错误和堆栈跟踪,可以在链中显式使用.checkpoint()运算符,以便捕获有关“程序集”(在代码中声明运算符链)的信息,以提供更多上下文。然后,它被显示为异常堆栈策略的一部分,作为被抑制的异常。
对于我们来说,使用IntelliJ的新异步调试器功能也有点困难,因为执行模型没有提供一对固定的“调度站点和执行站点”:publishOn和subscribeOn等操作符用于在序列中间切换线程的Scheduler抽象意味着任意的“执行站点”(任意的ExecutorService、滚动自己的线程池、Thread等)。
我鼓励您阅读http://projectreactor.io/docs/core/release/reference/#debugging官方参考文档中有关堆栈跟踪和调试的内容
https://stackoverflow.com/questions/51100118
复制相似问题