## Palm Debuffer

The debuffer is an assembly level debugger for the Palm OS Emulator available from Palm Computing. The emulator is a great aid to Palm development and the purpose of the debuffer is to let you spy on all those low-level details you can't get to otherwise.

The debuffer is in no way associated with, endorsed by, or supported by Palm Computing. In other words, if it eats your baby you can't sue them. Or me, for that matter. Legal protections aside, Palm has great developer support and does encourage and support the creation of new development tools for their platform.

### Debuffer?

It's named after my dog Buffy, who bugs me.

### News

Jan 08, 2001 --
  - Debuffer 1.3 is here! Version 1.3 (for Windows only) incorporates a large number of fixes and updates entirely due to Christian Lipp. Among other things, he has brought Debuffer up-to-date with the latest versions of Palm OS.
Nov 10, 2000 --
  - Debuffer has moved! We're now hosted on SourceForge.
Oct 21, 2000 --
  - Debuffer is moving! Debuffer is in the process of relocating to SourceForge. I'm hoping to resume development and get this thing up to date. Any help is, of course, appreciated.

### Documentation

To get your feet wet with the debuffer, start with the tutorial. The tutorial introduces a few of the more common commands and helps you get used to working with the debuffer. Then, to answer the question "why the hell is everything backwards?", go on to the FORTH intro.

Also available, you can have a look at a wordy example-oriented command introduction that includes general sections on PalmOS assembly-level debugging. (Eventually, the general stuff will be extracted to its own file.) When you're ready to get to work, get the concise command summary to keep handy. The summary is duplicated in the on-line help, available through the command "help", if you don't want to waste an entire sheet of paper.

With the exception of the FORTH intro, all the documentation is included in both the source and binary distributions.

Documentation summary:

- tutorial
- FORTH introduction
- command overview with examples
- 1-page command summary

### Download

The debuffer is available for Windows or Macintosh, in both binary and source distributions. The debuffer is free for any use and comes with the usual no-warranty.

Windows
  - Windows binary (1.3)
  - Windows sources (1.3)
Macintosh
  - Macintosh binary (1.1)
  - Macintosh sources (1.1)

To install, unzip and put it somewhere. The binary distribution consists of the executable and three FORTH files (ending in .fr). The debuffer expects these files to be in the current directory at startup, so if you just leave them in the same location as the executable you shouldn't have a problem. You see, actually a good deal of the debuffer is written in FORTH.

Getting started with the debuffer is fairly easy. First, of course, you need to get the emulator and some ROMs (preferably the debug ROMs). When you've got all the pieces, start the debuffer and then the emulator. The debuffer will wait for a debug event from the emulator. As soon as you generate a debug event, you'll see a prompt and can dig in. To start the debuffer using the socket interface, start it with the command line "debuffer -s".

### History

Back in the dark ages when I was a Macintosh programmer, I fell in love with MacsBug. When I got my Palm III it took me all of about two days to discover there was nothing comparable for it, so when I saw a newsgroup post by Keith Rollin offering aid and assistance to anyone who would embark on such an adventure, I jumped on it.

Life, as it does, interfered and it took me a good three months to put it together, but it's finally here. (Indeed, it took so long I finally had to change the batteries in my Palm III.) It's still no MacsBug, but it's a reasonably useful little tool.

### Credits

It should go without saying that the debuffer did not spring fully formed from my head (fingertips?), but instead builds on the work of a number of other individuals.

Perhaps the most important contributor was Bernd Schmidt, author of the original Un*x Amiga Emulator (UAE). Not only did the UAE form the basis of the original Copilot emulator, but his scheme for representing the 68000 instruction set forms the core of the disassembler.

Credit also goes to Greg Hewgill for writing the Copilot emulator and to Darrin Massena for his contributions to the original Copilot debugger. I stole many good ideas from their code.

When Palm took over Copilot and turned it into the Palm OS Emulator, they dropped the integrated debugger in favor of a generalized debugger interface (supporting Metrowerks and GDB, in addition to the debuffer). Palm deserves recognition not only for providing a powerful and flexible interface, but also for providing accurate and useful documentation and source code.

Last, and certainly not least, thanks to John Sadler for writing FICL, an embedded FORTH interpreter. FICL contributes to the debuffer's strongest assest - its scriptability. I've also written a C++ wrapper to FICL which you can get here.

Last modified: Jan 08, 2001