Example debugging log

This is an excellent example debugging log, shared with permission of the students that created it. Note how the authors observed data, formed a hypothesis, conducted tests, and repeated the process.

You need to be practicing this methodology in order to solve bugs successfully.

Java ray tracer log


12:30 PM:

We will create a new Hypothesis:


12:33 PM:

We will create a new Hyponthesis.

We believe that the bug is located in one of the classes used by Render. We will investigate Tracer first since during a quick test of changing the Shader's initial Color to white, we get a clear image of white circles with gray background. This means that the math used by the RayGenerator is more than likely Correct.



Tracer also uses Shader, so this is a good location to start looking.


2:28 PM

We believe we have narrowed down the bug to somewhere in the shade method, after its start and before it checks for obstructions.


After talking with our professor, we learned that there were no planes in these tests. Instead, they are larger spheres, meaning sphere intersect code that may have the bug.

5:15 PM

Our new working Hypothesis is that the bug is located somewhere in the Sphere's intersect method.

5:50 PM

Stepping through a pixel that is offcolor, the bug seems to be that light vectors to a point on a sphere are sometimes hitting that sphere and thus being considered obstructed.

Sadly, we don't know enough about how the mathematics works to be able to tell what needs to be checked for imprecision and what doesn't. As of now, noise persists only on very large spheres, which would probably break the tolerance check outright.

Shared with the premission of Dominic Grazioli and Sean Mongoven