Common scenario is that a developer wrote an application on his/her dev machine A (which has source code, etc), and wants to debug this application's source code when the application is running on the remote machine B. Visual Studio 2008 provides two ways to help with this scenarios easily. Read the http://msdn.microsoft.com/en-us/library/bt727f1t.aspx. Basically, you can use "Attach Process" way to attach the program which runs on the remote machine to debug it, and you also can "Start the external program" that you want to debug on the remote computer. Usually I use the second way, because it is very easy for debugging the launching process.
Here, I summarize a few steps to run the Remote Debugging Monitor (msvsmon.exe) on the remote computer B and set properties of Visual Studio for remote debugging a managed (C#) application.
The details steps are
That is it! You can debug it as if the application is running on your dev machine (the application is actually running on the remote machine). :)
Key point: Make sure your application is built with symbols.