Hound
Approaches to get around a big codebase
Hi guys
I am second month in a new job, so far I've working for couple of years with a lot of Python, C/C++ projects with VSCode on Linux, thats the environment I am used to. Now I am working on Windows using Visual Studio on two solutions the C++ and C# one, that have hundreds of projects and they are dozens of millions lines of code. I am trying to get some work done on the C# solution, however, its a product that has a long history, there is a lot of weird design decisions, lack of documentation, extreme complexity, inconsistent style, tons of code, tons of components - lot of different processes each with a lot of different threads, communicating with different services across several machines of different architectures. Now getting around this is a headache, especially because I don't even know Visual Studio or other tooling very well.
Do you have some tips for tools, articles, whatever how to get some high level sense of what is going on in such context fast? I am talking about the C# solution. Attaching to more than 1 process in VS and debugging it (without opening 1 instance of visual studio for each process)?
Maybe lets simplify. Lets talk about following scenario:
You have a way to trigger some routine and you know which one, you can breakpoint at start of that. Finding what you need by going through the whole flow is very time consuming. Can you get a call/flow graph of that routine somehow? Find out what threads that routine spawns? In what parts does it do network communication, maybe somehow set a break point when it reaches for some system functionality - threading, networking, creates locks or I/O in general.
Anyway, if you have some personal ways to get around very complex codebases, I'd love to hear that for some inspiration to improve my workflow. Thanks!
6 replies