You can use WinDbg to do that but it will be a bit more limited and not be easy to have a line level debugging.
You can do a function level debugging with WinDbg without a problem though again, its not as nice as using a line level debugger like Visual Studio.
Another option would be to use memory dump and take them when you are getting exceptions or when the process crash and using WinDbg to analyze them. It would allow you to get call stacks on the exceptions.
You can go to these following posts on my Advanced .NET Debugging blog to get more information on how to use WinDbg:
Setting a breakpoint in WinDbg for Managed Code
WinDbg
That should get you started on that.