From the comments to the question:
So how do you guys go about debugging buffer overrun errors under .NET?
Most of the time, there is nothing to debug in the first place. By that I mean, of course of a bug exists and you need to fix it, but the bug isn't in your code. It's in an unmanaged library you're calling into that you can't change. The only thing you can do is not use that library in that way.
So that's one common cause: a bug in an unmanaged library.
This can also happen if you call an unmanaged library that doesn't have a bug, but the library expects you to explicitly tell it the size of the buffer and you give it the wrong number. This is a problem with your code that you need to fix. However, it rarely happens in .Net because finding the size of a buffer is usually as simple as checking the .Length property of a byte array.