This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [libstdc++ PATCH] libstdc++ debug mode


On Thursday, July 17, 2003, at 2:38AM, Gawain Bolton wrote:

I think the debug mode patch you are proposing for libstdc++ is great. I
would even say it is essential given the number of misuses of the C++
standard library I have seen! I especially like how iterators are
automatically invalidated when performing operations which invalidate them.

Glad I was able to get you interested :)


I have a few questions though:
    1. Why do you provide trivial destructors?  (For example: "~deque()
{ }").

Two reasons:
1) Habit :)
2) To generate the debug wrappers, I actually copied verbatim the synopsis sections of the standard and amended them according to DRs, so if the synopsis listed the destructor, I put in the {} instead of removing it. Interface accuracy is _very_ important to me.


    2. Can a program (executable) be compiled with some parts using the
debug version of libsdtc++ and others the nominal verson?

In the patch I supplied, no. I'm testing a different patch that allows mixing debug and non-debug (but gives up some of the checking behavior, unfortunately).


2.1 Along the same lines, but pushing things further, how could one
have debug mode turned on for a specific container type (eg. std::list) or
variable (e.g. just for variable "foo" of type std::map in bar()?

There isn't currently a way to turn on debug mode for a specific container template (e.g., std::list), but the debug wrappers are available in a separate namespace __gnu_cxx::debug. So if you want your "foo" to be a debugging std::map<...>, include <ext/debug/map> and change its type to __gnu_cxx::debug::map<...>. Depending on how your program references the name std::map, you might be able to pull some using declaration tricks to decide between the two :)


Note: the header location and namespace will be changing as requested by Benjamin, so don't rely on them just yet.

Doug


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]