MykesBug Debugger Version 1.02 ©1986,1987,1988,1989,1990,1991 Mike Schwartz, all rights reserved. This software is NOT public domain and can only be distributed on a beta-test basis with the permission of the author. Currently, the only people that are allowed to beta test this program are employees of CBM. * Differences between 1.01 and 1.02 are denoted by '*'. It is a * good idea to read through the document to fully realize the * extent of the latest changes (a lot happens in a day :) This is a very preliminary version of a new debugger for the Amiga that I am currently working on. This represents only a few days of work, so as you can expect, it lacks the ultimate polish it will have, as well as many features that it will have. However, what is implemented is stable - I've run the SAS 'C' compiler, LMK, and various other programs through the debugger with no problems. * PLANNED ENHANCEMENTS (Blue Sky) 1. Fuller source level debugging support (i.e. >d1) for SAS 6.0. 2. Source level debugging support for Manx (and DICE?). 3. Enforcer/Mungewall/MemMunge features (use MMU). 4. Remote debugging via serial port * PLANNED ENHANCEMENTS (Fer sher) 1. Addition of Mixed mode display 2. Mouse Input (lots of good ideas here). Mouse click on source/dism line will do a go (to that line) Mouse click on address part of line will simply set a breakpoint at the line. Mouse click on numbers will autotype them on the command line. Mouse click on registers... 3. Color support (there are 2 planes :) Highlight changed registers Highlight current PC in display window Highlight breakpoints 4. "Consistency" check validate memory list validate low memory addresses check stack against bounds checksum memory regions etc. 5. "poor man's history trace" Use the trace bit and record history of program execution. 6. Command line switches for Debug program history size, etc. 7. Library breakpoint run until somebody calls AllocMem() 8. Library trace Record calls to library routines 9. Command line history and editing improvements 10. DOS library structure dumps 11. Graphics library structure dumps 12. Intuition library structure dumps 13. Stack Trace 14. Modifyable global symbol table This will allow you to comment and label OS routines :) 15. Context display Show symbols Select different context/task to debug 16. Display of the source file name on screen 17. Signal command (sets signal bit of a task) 18. CLI local environment variables to be used to specify source code directories. This will prevent the need for running Debug from the same directory as the sources. 19. Full-blown 68010/68020/68030/68040/68851/68881/68882 disassembly support. 20. Display info about MMU setup and usage. CHANGE HISTORY 1.03 Changes 1. *Color added to display. 2. *Cursor Up/Down in source mode - use line # 3. X Breakpoints use line # if in source mode 4. *breakpoints in supervisor context 5. *case insensitivity 6. Uses GfxBase routines to contruct CopperList. (temporarily removed) 1.02 Changes 1. MykesBug now does SetFunction on Debug() (assembly programmers can just use a TRAP instruction anywhere they want in their code, as well) 2. Added Info command, moved library base display to info display. 3. Added ExecBase command, dumps ExecBase structure. 4. Added MemList, ResourceList, DeviceList, IntrList, LibList, PortList, TaskList commands for displaying Exec lists. 5. InitDebugger and CleanDebugger now called via Supervisor() and the VBR register is used to locate the exception vectors! 6. VBL handler no longer cycles pointer color 1.01 Changes 1. 32 sticky breakpoints implemented, using bs,br, and bd commands. 2. Single Step changed to restore system before stepping. 3. Source level single step improved to work as good as CPR. 4. Source level stepover function is same as single step. 5. Copper List disassembler implemented, using dc command. Initial dc address is GfxBase->LofList. 6. Fixed bug in the mr command that prevented modification of data and address registers ('C' syntax problem :) 7. Debugger now revectors Alert() to catch OS errors as well as CPU exceptions. 8. suspend.info added to distribution 9. MykesBug now checks for the existance of suspend.info and prints instructions on how to create one if it is missing. 10. Bug fixed in suspend routine to handle case where suspend.info doesn't exist (used to try to FreeDiskObject(NULL), which is a NONO). 11. Bugs fixed in the bc,wc,lc commands. These now should work. CONTENTS This archive should contain the following files: readme.txt - this file features.txt - a preliminary features list for the debugger mykesbug - the resident portion of the debugger debug - the debug-time portion of the debugger (CLI usage) test - a very simple demo program that I test debug with test.s - source to test program above hello - a 'C' test program to test CLI compatibility and 'C' hello.c - source to hello program umain.c - source to _main from SAS (required for source level debugging of hello) suspend.info - icon for suspend mode AppIcon (this was missing from 1.00) INSTRUCTIONS * WARNING: Be sure to turn Enforcer OFF, or MykesBug will fail. MykesBug is the resident portion of the debugger. It exists half in OS land and half in supervisor state. This program should be RUN with the RUN command (segment splitting or TSR functionality to be added, perhaps). Once MykesBug is running, it will have revectored all of the low level CPU exception vectors so it can catch any of these exceptions. The only vector not currently handled is the privilidge violation, because of some specialized code that exists in the ROM version of the handler. This will be addressed in the next release. MykesBug can be installed in your startup-sequence: RUN NIL: MykesBug >nil: