## Name

glGetDebugMessageLog — retrieve messages from the debug message log

## C Specification

`GLuint glGetDebugMessageLog(` | GLuint count,
| GLsizei bufSize,
| GLenum *sources,
| Glenum *types,
| GLuint *ids,
| GLenum *severities,
| GLsizei *lengths,
| GLchar *messageLog`)`;

## Parameters

`count`

  The number of debug messages to retrieve from the log.

`bufSize`

  The size of the buffer whose address is given by `messageLog`.

`sources`

  The address of an array of variables to receive the sources of the retrieved messages.

`types`

  The address of an array of variables to receive the types of the retrieved messages.

`ids`

  The address of an array of unsigned integers to receive the ids of the retrieved messages.

`severities`

  The address of an array of variables to receive the severites of the retrieved messages.

`lengths`

  The address of an array of variables to receive the lengths of the received messages.

`messageLog`

  The address of an array of characters that will receive the messages.

## Description

`glGetDebugMessageLog` retrieves messages from the debug message log. A maximum of `count` messages are retrieved from the log. If `sources` is not NULL then the source of each message is written into up to `count` elements of the array. If `types` is not NULL then the type of each message is written into up to `count` elements of the array. If `id` is not NULL then the identifier of each message is written into up to `count` elements of the array. If `severities` is not NULL then the severity of each message is written into up to `count` elements of the array. If `lengths` is not NULL then the length of each message is written into up to `count` elements of the array.

`messageLog` specifies the address of a character array into which the debug messages will be written. Each message will be concatenated onto the array starting at the first element of `messageLog`. `bufSize` specifies the size of the array `messageLog`. If a message will not fit into the remaining space in `messageLog` then the function terminates and returns the number of messages written so far, which may be zero.

If `glGetDebugMessageLog` returns zero then no messages are present in the debug log, or there was not enough space in `messageLog` to retrieve the first message in the queue. If `messageLog` is NULL then no messages are written and the value of `bufSize` is ignored.

## Notes

Although debug messages may be enabled in a non-debug context, the quantity and detail of such messages may be substantially inferior to those in a debug context. In particular, a valid implementation of the debug message queue in a non-debug context may produce no messages at all.

## Errors

`GL_INVALID_VALUE` is generated if `count` or `bufSize` is negative.

## Associated Gets

glGet with argument `GL_DEBUG_LOGGED_MESSAGES`

glGet with argument `GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH`

glGet with argument `GL_MAX_DEBUG_MESSAGE_LENGTH`

glGet with argument `GL_MAX_DEBUG_LOGGED_MESSAGES`

## See Also

glDebugMessageInsert, glDebugMessageCallback, glDebugMessageControl.

## Copyright

Copyright © 2012 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.