Question: These day I come up with a large software. 

I have to debug in Visual Studio 2008.

The steps I take are:

1. Using callstack window to find the code blocks that I i thinks it may have bugs.
2. Using Immediate windows to call some local functions to see whether the data structures
in this blocks are correct.
3. When I got the result in step 2,I have to go to step 1 to find the source of the bug
using callstack again.

What is your favorite method to debug large or small program in Visual Studio?

I don't think to run whole the program and watch all the related data structure is 
good way to debug.

Answer: 
Putting breakpoints into suspicious methods and using **Immediate Window** is my way. I'm a huge fan of **Immediate Window**.

Also **conditional breakpoints** are the other way I like. especially when I'm iterating a collection to find an object that is suspicious. I put a condition to breakpoint and press F5 to get it.

**Ctrl + Alt + Q** combination is another good shortcut for **Quick Watch Window** to analyze an object.
To locate the code that corrupts a variable's value I create a **data breakpoint** for that variable. The program will break its execution every time the variable's data changes, either through correct code, but also through a stray pointer.