Showing posts with label gdb debugging-helpers typedef. Show all posts
Showing posts with label gdb debugging-helpers typedef. Show all posts

Monday, July 20, 2009

Gdb Typedef Bug - Update

Looks like the gdb typedef debugging helper issue isn't going to be easy to fix:

The type reported by gdb is 'List'. I could resolve this to 'QList' 'manually', However, doing so would generally impact the debugging helper performance as this would need an additional roundtrip for each item in the Locals&Watchers view (and an roundtrip takes several dozen milliseconds even on fast machines, so we are talking about slowing down each 'step' by a second or so.)

You can get a 'nice' display of list2 'manually' by creating a 'Watcher' with expression *('QList'*)&list2 .

I understand this is neither obvious nor convenient, but I am also a bit afraid of the general slowdown.

So for now I am tempted to leave it as it is.
The manual watcher tip is one to remember.

Sunday, July 19, 2009

Debugging Helpers typedef Bug

Debugging helpers are great. They show you the contents of common Qt types such as maps, lists and strings and are invaluble when debugging code. However, a bug exists that means if you typedef a QMap, QList, etc. then the debugging helper won't work. Take the following example:

#include <QtCore/QCoreApplication>
#include <QMap>

#include <QString>

#include <QListv


int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QMap<QString, QString> map1;

map1["Hello"] = "World!";


typedef QMap<QString, QString> Map;

Map map2;

map2["Hello"] = "World!";


QList<int> list1;

list1.append(1234);


typedef <int> List;

List list2;

list2.append(1234);

return a.exec();

}


If you stick a breakpoint on the last line the debugger happily displays the contents of map1 and list1, but not map2 and list2 as they have been declared using the typedef. Now, I use the typedef keyword a lot, so this is a PITA, but it's been reported so I'm sure a fix is in the works.