Copyright (c) Hyperion Entertainment and contributors.

AmiWest 2013 Lesson 1

From AmigaOS Documentation Wiki
Jump to navigation Jump to search

How to Crash

As any Amiga programmer knows, crashing an Amiga isn't very difficult. The trick is to figure out why it crashed and how to find that line in your source code which caused the problem.

Meet the Reapers

When your Amiga crashes two main things happen:

  1. Exec's Reaper is notified of the crash and tries to handle the crash.
  2. Reaper then launches Grim Reaper which attempts to try and handle the crash.

Exec Reaper

The Reaper is always running in the background and is waiting for something to do. It is launched by the Exec kernel. When Exec runs into a problem it notifies Reaper which is then responsible for handling the crash. Reaper has no GUI but it does have some limited amount of control via DOS environment variables. For information this can be found in the Exec Debug section.

Output from Reaper is to the default serial port.

Grim Reaper

Capturing Debug Output

Interpreting the debug output of the Grim Reaper can be rather daunting and that is what we will be exploring.

Here is an example program from which we will start working:

#include <exec/types.h>
 
int main()
{
	uint32 *zero = 0;
	*zero = 0;
	return 0;
}

Although simple, this program will enable us to explore how to read the Reaper (serial port) and Grim Reaper (GUI) output. We will show you how to turn debugging symbols on and off. The stack trace will be our first stop on the road to figuring out just what happened and why.

There is also the Exec Debug Kernel which will be using to help us with debugging our programs.