Before diving into the topic here are a few hints about debugging in TYPO3 CMS.

The TYPO3 Core provides a simple debug() (defined in EXT:core/Classes/Core/GlobalDebugFunctions.php). It wraps around \TYPO3\CMS\Core\Utility\DebugUtility::debug() and will output debug information only if it matches a set of IP addresses (defined in $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask']).

For example, the following code:

debug($_COOKIE, 'cookie');

will produce such an output:

Debug output

Typical TYPO3 debug output


The debug() function allows for adding your own debugging object. Put an instance of your class in $GLOBALS['error'] and its debug() method, receiving the same parameters as the original debug() function.

In general, look at class \TYPO3\CMS\Core\Utility\DebugUtility for useful debugging tools.