Some bugs seem impossible to fix. They are hidden deep in dependencies, external applications, or even operating systems. We may have a hard time reproducing them, no clue how to fix them, and not even understand what’s going on. What to do when we need to work under time pressure and deal with things we can’t easily fix in our codebase? There is just one answer – we need to see what’s going on.
In this talk, we will see tools that help us in those corner cases. We’ll see how to trace low-level APIs, see call stacks, reason about dependencies, and fix things in crazy places. We’ll generate traces and flame graphs, decompile and disassemble external dependencies, and patch applications on the fly.