For compiling/linking building, I use the CodeSourcery Lite Toolchain
http://www.codesourcery.com/gnu_toolchains/arm/ on Windows. Similar GNU cross-compiler environments exist for Linux.
For debugging, I use a Realview-ICE and the Realview Debugger, which, along with ARM semihosting, this toolchain and the standard libraries that it comes with makes a VERY nice stand-alone environment. The libraries with the CSL tools works with the semihosting to support things like printf, memory allocation, etc. so "Hello World" basically just ran (output to the Realview Debugger). I just had to configure the Realview tools for the memory map.
The Realview tools are pricy, but for the project I was working on at the time, turned out to be very well worth it. The time I saved easily paid for the tools. There are probably several other tools for debugging, and perhaps some much less expensive, but my previous experience with the ARM stuff was good so I went with them and everything turned out very well.