[cairo] Making it easier to track down errors

Mathieu Lacage Mathieu.Lacage at sophia.inria.fr
Mon Jun 13 23:41:49 PDT 2005

hi carl,

On Mon, 2005-06-13 at 17:29 -0700, Carl Worth wrote:
> Here's a patch that adds a new function:
> 	_cairo_error
> that will be called whenever cairo detects an error within a cairo_t
> object.
> The idea here is to allow the user to set a breakpoint in _cairo_error
> in order to generate a stack trace for when the user code causes an
> error in cairo.

I have been burned by this kind of API before and I cursed the authors
of the code more than once. Specifically, I wished they had done
something like this:

1) add a function pointer to their structure which is invoked whenever
the error is detected
2) add a public setter for this function pointer
3) initialize it by default to _cairo_error.

That way, you can use the breakpoint thing in a debugger _and_ you can
avoid having to use a debugger if all you want is being notified of the
error event. Specifically, I can imagine lots of people who would want
to use some kind of runtime switch to enable a special error function to
be called in the cairo code to get a bunch of debug spew without running
the application in a debugger.

my 2 cents,

More information about the cairo mailing list