During a set of web systems migration, things went very wrong and a customer requested me help in setting the systems up again.
One of the systems was developed in the .Net platform, not one of my strongest technologies, and C#.
He was getting really desperate when I started helping, because there was already one technical person looking at it for almost two months...
One of the first things I've detected was that the application that did not work referenced another application, which was not available. Fortunately, that project was available as an assembly, so all that was required was to include the assembly in the configuration file and we were ready for the next challenge.
The next challenge was not easier to detect, since the errors reported mentioned a missing log directory. The problem, though, was not caused by the missing directory. Any error that occurred was logged, but since the log was not working, it reported a directory not found.
Scanning the configuration for the debug location, we tried "./debug", expecting that the debug directory to be relative to project. Unfortunately, that was not the case!
The debug was managed by the previously stated external project, so I needed to see the what the debug code was doing in order to understand how to solve the problem.
The solution came from .Net Reflector, a great tool that allows one to open a library and navigate through its source code.
After a while I was able to understand how the debug file was being written.
The programmer that coded the open debug file function was lazy, in a pejorative sense, was did not account for a relative path, forcing one to configure the debug file location with a full path statement, which is not straightforward when one is using a common web hosting service...
Fortunately, soon after, I was able to discover the full path for the application, so we specified the debug path as "c:\..." and things start rolling.
If it wasn't for .Net Reflector, I would have taken a lot more time to find out why the "./debug" value was being ignored and the debug file was trying to be written in "c:\windows\...".
It's a great tool for all serious .Net developers, I truly recommend it.