xdebug (the best way for write great source and see the hints of WordPress, maybe deprecated functions) and also the possibilities of WordPress, like constant WP-DEBUG
/** Debugging WP */
define('WP_DEBUG', true); //enable the reporting of notices during development - E_ALL
define('WP_DEBUG_DISPLAY', true); //use the globally configured setting for display_errors and not force errors to be displayed
define('WP_DEBUG_LOG', true); //error logging to wp-content/debug.log
define('SCRIPT_DEBUG', true); //loads the development (non-minified) versions of all scripts and CSS and disables compression and concatenation,
//define('E_DEPRECATED', true); //E_ALL & ~E_DEPRECATED & ~E_STRICT
more about my toolbox in this post , but current I use PhpStorm as IDE, also GitHub as Repository.
Inside WordPress I use the plugin Debug Objects for a lot of jobs in the debugging content.