Yes, you read that title correctly, MonoTouch 1.2 supports debugging in MonoDevelop! I have known about this for a while and I’ve just been waiting for the opportunity to let all of you know this wonderful news. It hasn’t been an easy secret to keep as it is definitely a game-changing feature for many of you that have been on the fence about whether or not to jump on the MonoTouch bandwagon. Well, you can’t use lack of debugging as a reason to not justify the purchase any more. The really cool thing about this debugging support is that it works on both the simulator and the device. Since Apple does not directly allow third parties to participate in their debugging infrastructure, Geoff Norton and Michael Hutchinson, et al., had to do a lot of work to get this to work and they should be commended for their efforts. Debugging MonoTouch requires the iPhone to communicate back to the computer. From the upcoming documentation at http://monotouch.net/Documentation/Upcoming/Debugger:
The MonoTouch debugger is a soft-debugger, that means that the generated code and the Mono runtime cooperate with the MonoDevelop IDE to provide a debugging experience. This is different than hard debuggers like GDB or MDB which control a program without the knowlege or cooperation from the debugged program.
For on device debugging, your iPhone needs to be on the same Wi-Fi network as your computer (yes, debugging over Wi-Fi…even Apple doesn’t completely allow this). You should note that the debug build of your code will include the cooperative Mono runtime so the resulting program will be larger than a regular program. This is because the generated code has been instrumented to be debugged. A debug build will also be slower than a regular release build so it should not be used for performance testing.
The team has put a lot of really hard work into this. The result of this work is a truly native feeling debugging atmosphere that should be familiar to anyone who has used IDE debugging in the past. You set a breakpoint on a line and when your code hits that breakpoint you can inspect local variables in the Locals window, see the Call Stack in the Call Stack window, and get on-hover information for variables in your code. At the end of this post there are screenshots for you enjoyment (and salivation!).
I can really only summarize this release in one word: awesome. Go check it out for yourself later today at http://monotouch.net and stop into the IRC channel at irc.gnome.org #monotouch and say thanks to the development team for this awesome feature.
Update: According to Miguel de Icaza, there will be a beta of MonoTouch 1.2 available later today.
Here are the screenshots I mentioned previously: