Microchippin'
If I were to describe MPLAB X, the NetBeans-based IDE that Microchip is pushing as the primary development suite for all new PIC32 projects, I believe I would leave it at simply: insufferable.
It is swell that Microchip is kind enough to provide a free IDE to sit on top of free compilers and interface with quite inexpensive debuggers. But the experience of using said tools isn’t exactly pleasurable. And, as I recently found out, shelling out lots and lots of cold hard cash for their premium products… doesn’t really improve things much on the tools front.
I have one concern, in particular, that seems totally inexplicable. Who ships a development suite with NO FUNCTIONAL COMMAND-LINE DEBUGGER? Forcing me to use your unstable IDE is already bad enough, but when your IDE isn’t even functional, how am I expected to debug my code?
Microchip keeps stating that better command-line support is planned for some unnamed time in the future. They have begun work, and MPLAB X currently ships with an unfinished command-line debugger that Microchip welcomes you to try.
For Windows platforms this is ‘mdb.bat’, and for POSIX platforms it’s ‘mdb.sh’.
Here is it in one of its rare moments of proper functioning:
$ ./mdb.sh
>device PIC32MX150F128B
content/mplab/mplab.deviceSupport
content/mplab/MPHeader.xml
content/mplab/PluginBoardSupport.xml
>hwtool RealICE
Nov 21, 2012 12:36:58 AM com.microchip.mplab.mdbcore.RealICETool.RIMessages OutputMessage
INFO:
*****************************************************
Connecting to MPLAB REAL ICE…
Firmware Suite Version…..01.28.18
Firmware type…………..PIC32MX
Target detected
Device ID Revision = 0x10000000
>program “/Users/<CENSORED>/<CENSORED>.elf”
Programming target…
The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0x1ffff
boot config memory
configuration memory
Programming…
Programming/Verify complete
Program succeeded.
>break MainDemo.c:280
Breakpoint 0 at 0x9d00f5ac: file MainDemo.c, line 280.
>continue
Running
>Target Halted
Stop at
address:0x9d00f5ac
file:/Users/<CENSORED>/MainDemo.c
source line:280
>print dwLastIP
dwLastIP=0
>
Cool! I’ll bet it even handles structs!
>print AppConfig
AppConfig=
>
Hmm, guess not. Well, let me just recall my breakpoints again:
>breakpoints
Undefined command: “breakpoints”. Try “help”
>break
Error: invalid parameter.
>bp
Undefined command: “bp”. Try “help”
>
Just kidding! It doesn’t support that. Well, let’s hit the next line:
>next
It’s not a coincidence that all of the other examples above end on a prompt, and this one doesn’t. This one never returned to the prompt, it just hung forever.
It supports watch points and conditional breaks, but it doesn’t support setting a breakpoint on a function name, displaying structures, or viewing the current breakpoints. And it crashes or hangs all the time.
So, currently mdb is unusable. Which is expected, since Microchip admits as much. But MPLAB X is also unusable (confirmed by their forums). So, that only leaves one option…
Stay tuned.