Bug #765

Debug messages of psdimages.cpp go to stdout instead of stderr

Added by Volker Grabsch over 10 years ago. Updated almost 10 years ago.

image format
Target version:
Start date:
07 Mar 2011
Due date:
% Done:


Estimated time:


The debug messages of psdimages.cpp are currently written to stdout instead of stderr. The attached patch fixes that.



Updated by Volker Grabsch over 10 years ago

I'm not sure whether this was really a bug. Some of the src/*image.cpp files prefer stdout and others prefer stderr for DEBUG messages. Some even mix them.

Is there any convention / best practice about this?

Maybe some central kind of "std::istream &Exiv2::debug;" could provide more clarity here?


Updated by Volker Grabsch over 10 years ago

Sorry for the typo. I was of course thinking of an "ostream" instead of "istream", something like this:

std::ostream &Exiv2::debug = std::cerr;

This would even allow to use a std::ostrstream to collect all debug messages to show them in a GUI rather than having them always written to stdout or stderr.


Updated by Andreas Huggel over 10 years ago

Debug output is not really standardized yet, but spelling out a convention is easy, now that we have LogMsg:

Debug output should use the EXV_DEBUG macro instead of any std output stream and be enclosed in #ifdef DEBUG blocks (similar to how warnings and errors are now handled). For example:

#ifdef DEBUG
        EXV_DEBUG << std::hex << "resourceId: " << id << std::dec << " length: " << size << "\n";

The application then just has to call LogMsg::setLevel(debug) and can optionally set its own log message handler to do with the output whatever it wants.

Coming up with a guideline for the kind of debug output that should be in the code is more difficult. The way I use debug output myself usually is to find out what's going on in some very specific situation. This kind of debug output is generally not interesting in a more general context.


Updated by Volker Grabsch over 10 years ago

  • File deleted (exiv2-0.21.1_debug_psdimage.patch)

Updated by Volker Grabsch over 10 years ago

That's a very nice convention. I'll follow that in future code, and I'll try to convert existing code if my time allows that.

On minor correction. The correct command to set the debug log level is:


Updated by Michael Ulbrich about 10 years ago

  • Status changed from New to Closed

Updated by Andreas Huggel about 10 years ago

  • Status changed from Closed to Resolved

Thanks a lot for your work, Volker & Michael! I've updated this issue back to 'Resolved', following the usual process. It will get closed when it's released.



Updated by Andreas Huggel almost 10 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF