Browse Source

Less verbose and annoyingly useless debug output.

pull/94/head
Vladimír Vondruš 11 years ago
parent
commit
73a743668b
  1. 51
      src/Magnum/DebugOutput.cpp
  2. 25
      src/Magnum/DebugOutput.h
  3. 19
      src/Magnum/Test/DebugOutputGLTest.cpp

51
src/Magnum/DebugOutput.cpp

@ -47,18 +47,59 @@ callbackWrapper(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei
#endif #endif
void defaultCallback(const DebugOutput::Source source, const DebugOutput::Type type, const UnsignedInt id, const DebugOutput::Severity severity, const std::string& string, const void*) { void defaultCallback(const DebugOutput::Source source, const DebugOutput::Type type, const UnsignedInt id, const DebugOutput::Severity severity, const std::string& string, const void*) {
Debug output;
output << "Debug output:";
switch(severity) { switch(severity) {
case DebugOutput::Severity::High: case DebugOutput::Severity::High:
Error() << source << type << id << severity << "\n " << string; output << "high severity"; break;
break;
case DebugOutput::Severity::Medium: case DebugOutput::Severity::Medium:
output << "medium severity"; break;
case DebugOutput::Severity::Low: case DebugOutput::Severity::Low:
Warning() << source << type << id << severity << "\n " << string; output << "low severity"; break;
break;
case DebugOutput::Severity::Notification: ;
}
default: Debug() << source << type << id << severity << "\n " << string; switch(source) {
case DebugOutput::Source::Api:
output << "API"; break;
case DebugOutput::Source::WindowSystem:
output << "window system"; break;
case DebugOutput::Source::ShaderCompiler:
output << "shader compiler"; break;
case DebugOutput::Source::ThirdParty:
output << "third party"; break;
case DebugOutput::Source::Application:
output << "application"; break;
case DebugOutput::Source::Other: ;
} }
switch(type) {
case DebugOutput::Type::Error:
output << "error"; break;
case DebugOutput::Type::DeprecatedBehavior:
output << "deprecated behavior note"; break;
case DebugOutput::Type::UndefinedBehavior:
output << "undefined behavior note"; break;
case DebugOutput::Type::Portability:
output << "portability note"; break;
case DebugOutput::Type::Performance:
output << "performance note"; break;
case DebugOutput::Type::Marker:
output << "marker"; break;
case DebugOutput::Type::PushGroup:
output << "debug group enter"; break;
case DebugOutput::Type::PopGroup:
output << "debug group leave"; break;
case DebugOutput::Type::Other: ;
}
output << '(' + std::to_string(id) + "):" << string;
} }
} }

25
src/Magnum/DebugOutput.h

@ -95,13 +95,10 @@ DebugOutput::setEnabled(DebugOutput::Source::Api, DebugOutput::Type::Other, {131
With default callback the group entering/leaving and the inserted message (and With default callback the group entering/leaving and the inserted message (and
possibly also other messages) will be printed on standard output: possibly also other messages) will be printed on standard output:
> DebugOutput::Source::Application DebugOutput::Type::PushGroup 42 DebugOutput::Severity::Notification\n > Debug output: application debug group enter (42): Scene rendering\n
> &nbsp;&nbsp;&nbsp;&nbsp;Scene rendering\n > Debug output: application marker (1337): Rendering transparent mesh\n
> DebugOutput::Source::Application DebugOutput::Type::Marker 1337 DebugOutput::Severity::Notification\n
> &nbsp;&nbsp;&nbsp;&nbsp;Rendering transparent mesh\n
> ...\n > ...\n
> DebugOutput::Source::Application DebugOutput::Type::PopGroup 42 DebugOutput::Severity::Notification\n > Debug output: application debug group leave (42): Scene rendering
> &nbsp;&nbsp;&nbsp;&nbsp;Scene rendering
If only @extension2{EXT,debug_marker} or @extension{GREMEDY,string_marker} are If only @extension2{EXT,debug_marker} or @extension{GREMEDY,string_marker} are
supported, only user-inserted messages and debug groups are supported and they supported, only user-inserted messages and debug groups are supported and they
@ -383,15 +380,14 @@ class MAGNUM_EXPORT DebugOutput {
* @brief Set default debug message callback * @brief Set default debug message callback
* *
* See @ref setCallback() for more information. The message is printed * See @ref setCallback() for more information. The message is printed
* to either @ref Corrade::Utility::Error "Error", @ref Corrade::Utility::Warning "Warning" * to @ref Corrade::Utility::Debug "Debug" output in the following
* or @ref Corrade::Utility::Debug "Debug" in the following format: * format:
* @code * @code
* DebugMessage::insert(DebugMessage::Source::Application, * DebugMessage::insert(DebugMessage::Source::Application,
* DebugMessage::Type::Marker, 1337, DebugOutput::Severity::Notification, "Hello from OpenGL command stream!"); * DebugMessage::Type::Marker, 1337, DebugOutput::Severity::Notification, "Hello from OpenGL command stream!");
* @endcode * @endcode
* *
* > DebugOutput::Source::Application DebugOutput::Type::Marker 1337 DebugOutput::Severity::Notification\n * > Debug output: application marker (1337): Hello from OpenGL command stream!
* > &nbsp;&nbsp;&nbsp;&nbsp;Hello from OpenGL command stream!
*/ */
static void setDefaultCallback(); static void setDefaultCallback();
@ -437,8 +433,7 @@ DebugMessage::insert(DebugMessage::Source::Application, DebugMessage::Type::Mark
1337, DebugOutput::Severity::Notification, "Hello from OpenGL command stream!"); 1337, DebugOutput::Severity::Notification, "Hello from OpenGL command stream!");
@endcode @endcode
> DebugOutput::Source::Application DebugOutput::Type::Marker 1337 DebugOutput::Severity::Notification\n > Debug output: application marker (1337): Hello from OpenGL command stream!
> &nbsp;&nbsp;&nbsp;&nbsp;Hello from OpenGL command stream!
If only @extension2{EXT,debug_marker} or @extension{GREMEDY,string_marker} are If only @extension2{EXT,debug_marker} or @extension{GREMEDY,string_marker} are
available, the message can be seen only through graphics debugger. available, the message can be seen only through graphics debugger.
@ -728,10 +723,8 @@ available and the default debug output callback is enabled for these kinds of
messages, the group entering and leaving will be printed on standard output in messages, the group entering and leaving will be printed on standard output in
the following form: the following form:
> DebugOutput::Source::Application DebugOutput::Type::PushGroup 42 DebugOutput::Severity::Notification\n > Debug output: application debug group enter (42): Scene rendering\n
> &nbsp;&nbsp;&nbsp;&nbsp;Scene rendering\n > Debug output: application debug group leave (42): Scene rendering
> DebugOutput::Source::Application DebugOutput::Type::PopGroup 42 DebugOutput::Severity::Notification\n
> &nbsp;&nbsp;&nbsp;&nbsp;Scene rendering
If only @extension2{EXT,debug_marker} is available, the group can be seen only If only @extension2{EXT,debug_marker} is available, the group can be seen only
through graphics debugger. through graphics debugger.

19
src/Magnum/Test/DebugOutputGLTest.cpp

@ -118,12 +118,11 @@ void DebugOutputGLTest::message() {
std::ostringstream out; std::ostringstream out;
Debug::setOutput(&out); Debug::setOutput(&out);
DebugMessage::insert(DebugMessage::Source::Application, DebugMessage::Type::Marker, DebugMessage::insert(DebugMessage::Source::Application, DebugMessage::Type::Marker,
1337, DebugOutput::Severity::Notification, "Hello from OpenGL command stream!"); 1337, DebugOutput::Severity::High, "Hello from OpenGL command stream!");
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(out.str(), CORRADE_COMPARE(out.str(),
"DebugOutput::Source::Application DebugOutput::Type::Marker 1337 DebugOutput::Severity::Notification \n" "Debug output: high severity application marker (1337): Hello from OpenGL command stream!\n");
" Hello from OpenGL command stream!\n");
} }
void DebugOutputGLTest::messageFallback() { void DebugOutputGLTest::messageFallback() {
@ -163,20 +162,16 @@ void DebugOutputGLTest::group() {
{ {
DebugGroup g1{DebugGroup::Source::Application, 42, "Automatic debug group"}; DebugGroup g1{DebugGroup::Source::Application, 42, "Automatic debug group"};
DebugGroup g2; DebugGroup g2;
g2.push(DebugGroup::Source::Application, 1337, "Manual debug group"); g2.push(DebugGroup::Source::ThirdParty, 1337, "Manual debug group");
g2.pop(); g2.pop();
} }
MAGNUM_VERIFY_NO_ERROR(); MAGNUM_VERIFY_NO_ERROR();
CORRADE_COMPARE(out.str(), CORRADE_COMPARE(out.str(),
"DebugOutput::Source::Application DebugOutput::Type::PushGroup 42 DebugOutput::Severity::Notification \n" "Debug output: application debug group enter (42): Automatic debug group\n"
" Automatic debug group\n" "Debug output: third party debug group enter (1337): Manual debug group\n"
"DebugOutput::Source::Application DebugOutput::Type::PushGroup 1337 DebugOutput::Severity::Notification \n" "Debug output: third party debug group leave (1337): Manual debug group\n"
" Manual debug group\n" "Debug output: application debug group leave (42): Automatic debug group\n");
"DebugOutput::Source::Application DebugOutput::Type::PopGroup 1337 DebugOutput::Severity::Notification \n"
" Manual debug group\n"
"DebugOutput::Source::Application DebugOutput::Type::PopGroup 42 DebugOutput::Severity::Notification \n"
" Automatic debug group\n");
} }
void DebugOutputGLTest::groupFallback() { void DebugOutputGLTest::groupFallback() {

Loading…
Cancel
Save