Sometimes, verbose just isn't enough. There are a couple options:
In your nuke home dir (assuming you haven't changed it, ~/.nuke on OSX and Linux - I don't know Windows), add or modify the init.py file by adding the line:
This prints out every callback nuke makes. There are a lot of them!
2nd level (super verbose):
If you want to get tons more information that you'll probably ever need, but might just help you find or discover that one stupid thing that's been breaking everything, you can use this code to turn things up a notch:
In code below, in the doc section of traceit(), there are some env variables you can add before you launch nuke. Any one of these will do:
setenv NUKE_TRACE_DEBUG call
setenv NUKE_TRACE_DEBUG line
setenv NUKE_TRACE_DEBUG return
setenv NUKE_TRACE_DEBUG exception
setenv NUKE_TRACE_DEBUG c_call
setenv NUKE_TRACE_DEBUG c_return
setenv NUKE_TRACE_DEBUG c_exception
Depending on what you set NUKE_TRACE_DEBUG to, python will return different amounts of information from the actual line of code to the call made, the return, or any exceptions.
To make all this debug relevant to Nuke, I've added the line:
if 'nuke' in name.lower():
to only capture nuke related processes. SInce all the code in our studio is in a package with "nuke" also in the package name, the trace also prints our internal python. Add or modify the 'if' at that stage to allow it to return more relevant information at your facility. It's waaaay too verbose otherwise, telling you every raw python call your code accesses.
To turn it back off, remove the env variable with