The nice thing with Visual Studio is that it's a professional tool aimed at professional developers. As such, it has many very nice functions including debugging without having to type anything in a command line aka gdb.
No need to remember commands and much faster than typing if you need to. Also has very nice features such as hovering over a variable allows you to see all the contents of it. If it's a class, you can browse through its members, for example. If it's a linked list, you can browse through your next/prev pointers in infinity to see if the list is intact.
Not to mention you can set data breakpoints which allows the debugger to break if a certain memory location was read/written or changed in any way, including a condition as to when it should break if an abovementioned event happens.
Of course it works with line breakpoints as well, which allows you to break on a specific line, and include a conidition to break if, say, i == 50 (useful to break after X amount of loops in a loop, for example).
It also includes a memory viewer to monitor what is happening to memory. That's useful, too, sometimes.
There's a lot in Visual Studio.
Now, while gdb and GCC is free, it is not a child's tool or an amateur's tool. It can be used as a professional tool, as well, but Visual Studio was developed specifically towards professional developers while gdb was not - it was designed for everyone.
That is also not to say command lines are not for professionals - but in Windows, GUIs are often considered more productive than command lines unless they are used for a specific purpose. We could go on about that forever, though...
Now I'd like to see gdb beat that