If a code base is large, then focus your attention to the parts that are currently working on. Otherwise you will feel overwhelmed and possibly your head may explode. I think some high level overview is helpful (if it is available), but chances are you will be spending lots of time in the debugger for following program flow. It is a good idea to get an overview of the application and seeing it used, so you can understand how/what/why the code is being used for.
I usually run some sort of code complexity tool on the code to tell me where the problem areas are. Areas that score high are probably very hard to update. For example, I ran into a function that scored 450 on the cyclomatic scale. Sure enough, hundreds of IFs. Very hard to maintain or change that. So be prepared for the worst.
Also, don't be afraid to ask questions to existing developers, especially if they worked on the system. Keep your internal thoughts to yourself and focus on solving the problems. Avoid comments that may make the other developers becoming upset. After all, it may be thier baby and nobody likes being told thier baby is ugly.
Take small steps, even the smallest code change can have big impact.
I find it is helpful to come up with program code flows so if I am making changes, I can do dependency searches to see which methods/functions call what. Suppose I am changing method C.
If only 1 method/function calls C, then it is a pretty safe change. If 100s of methods/functions call C, then it would be of greater impact.
Hopefully your code base is well architected, written, and maintained. If so, it will take some time to understand it but eventually the tide will be turned.
If it is a big ball of mud, you may never understand (or want to understand) its inner workings.