Diving into foreign code is the worst-first method to chase down an end-user bug. If the framework allows, it is better to investigate as the analysts and support do: the process is a black box sitting on a remote machine, and reported observations rely on visible strings. For them, the business domain is law; the system must adhere to mental expectations. Taking on these shoes is a form of convenient empathy.
Reproducing the issue is a form of simulation. At least a repeatable one helps with verification and acceptance. Or our explanations are muddled, those the final pieces after a collection of conditionals and exceptions. Did you notice the messages they see are usually the last thing typed? We were too busy writing the function from top to bottom.
I fancy printing source and pawing at it, but legacy has cruft and the toner would dry. Each ticket is a tiny test, each day an investment, and performance is somewhere tracked by starts and closes. It’s okay to be slow; just don’t be late.