Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
Coroutines is a shining feature of the Kotlin language, however when having hundreds of them running, debugging becomes a challenging task! In this talk, we will take a deep dive into the core of coroutine debugging, debunking its internals and reviewing available tools.
During the first part of the talk I will give the overview of the coroutine debugging tooling available in Intellij IDEA and how to use it:
Asynchronous stack traces
How the debugger handles stepping inside coroutines, where after pressing the 'step over' button you may wake up in a different world.
Coroutine Panel
Stack trace recovery (https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/topics/debugging.md#stacktrace-recovery)
The "-Xdebug" kotlin compiler flag that allows users to view variables that would normally be optimised. While presenting the tooling, I will also uncover the machinery behind it.
The second part of the talk will cover the tooling for coroutine debugging developed by the community:
Stack Trace Decoroutinator (https://github.com/Anamorphosee/stacktrace-decoroutinator)
Coroutine Stacks (https://github.com/nikita-nazarov/coroutine-stacks) I will give an overview of how to use it, which problems it covers and how it is different from what exists in Intellij.