The best start to debug OpenGL is by its included error checks and messages. Traditionally the programmer had to call glGetError() after each call that could fail. Newer OpenGL versions (4.3 and newer) have a callback functionality that replaces this (also available for older GL versions as the extension http://www.opengl.org/registry/specs/ARB/debug_output.txt ). As this extension needs a special debug context (this is not part of OpenGL but of the library that opens the OpenGL window, e.g. GLFW or QT) and some systems don't support this way of debugging (e.g. MacOS X 10.9 and older), ACGL includes a kind of emulator for this functionality. This works internally by calling glGetError() after each GL call - this slows down the apps, but is very helpful during development.
Per default this emulator is activated, deactivate this by calling ACGL::init() with the optional parameter false ( ACGL::init( false ) ). Use this for the final, working releases to get a bit of extra performance.
Other ACGL functions
To inspect textures (and thus layers of framebuffers) you can save TextureData objects to file with saveTextureData( texture->getTextureImage(), "debug.png" ).
There is currently no good cross-platform debugger for OpenGL. For simple API traces, state inspections and reruns of calls you can use APItrace (https://github.com/apitrace/apitrace).
NVidia has a good debugger, that is NVidia and Windows only.
Valve is currently working on a new debugger.