set<int> in Qt creator and debugger
-
well i started on Qt5.5 and back then,
when upgrading my my beloved win 7 to win 10, i also saw
some strange issues and warnings. In Qt/Creator.Could you post code. ?
Yes its easy to re-type but im old fashioned and likes that the code really IS the same. :)
Just wondering if gone in later versions/gdb version.
It looks like a bug to me. so lets test some more?
-
Sure!
#include <set> #include <QDebug> int main(int argc, char *argv[]) { std::set < int > setint; for ( unsigned i = 0; i < 20; ++i ) { setint.insert (i); } for ( std::set<int>::const_iterator it = setint.begin(); it != setint.end(); ++it) { qDebug() << *it; } return 0; }
and here the .pro file, which holds another surprise with new creator.
QT += core QT -= gui CONFIG += c++11 TARGET = TestDebugSet CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp # The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
Certainly it is good to do more testing. I did not expect that it is as easily reproducable.
If you mean old-fashioned -> lazy , I'm old-fashioned too. ;) -
I see the same with Qt 5.7.1 and MinGW 5.3.0.
Wasn't there something to be installed alongside with the tools for debugging with gdb?
[edit, koahnig] That is what I remembered. Found in here
GDB On Windows, use the Python-enabled GDB versions that is bundled with the Qt package or comes with recent versions of MinGW. On most Linux distributions the GDB builds shipped with the system are sufficient. You can also build your own. Follow the instructions in Building GDB. Builds of GDB shipped with Xcode on macOS are no longer supported. -
Here is a link to the second picture. Part of the picture is the first picture anyway.
-
@koahnig said in set<int> in Qt creator and debugger:
What do you mean with buckets?
Whatever this would be, shouldn't it non-repeating?No, it can be repeating, it depends on the internal structure of
std::set
. I assumed (erroneously) the set is implemented as a hash-table (like in Qt), so that's where "buckets" come from - it's the index of the array where the actual data is kept. Anyway, after a quick lookup I see it's a red-black tree (i.e. likeQMap
), so my new hypothesis is you're looking at the node index be it left node or right. I'd even make a further step and speculate0
is the root node,1
is the left node and2
is the right node (relative to the parent).In any case you should probably file a bug report on it, as the debug helpers don't seem to properly resolve the actual data.
-
Bug report filed QTCREATORBUG-17653
-
Thanks for checking.
This reflects my memory. I had upgraded recently to latest qt creator version, but left all the different Qt lib version and their associated tools, respectively there might be an update somewhere, but not on all different Qt lib versions.
I am pretty sure that the display worked prior to the upgrade of creator.
Unfortunately, I cannot go back easily to previous Qt creator setup for checking. At least I will not dare to do, because there have been adaptations to project setups.
-
@mrjj
Not sure, but I think I had a 4.1.x already bnefore upgrading. This would correlate with your findings.
[edit:koahnig] Yes, the change to V4.2.1 brought up the problem.I am too "old-fashioned" to keep track of this.
In general I am a slow upgrader, because "Never change a running system". Therefore, I am mainly using 5.4.2 at the moment. This gives the nasty message when starting up the application on win10, but it works and that is the point. -
@koahnig
So if I upgrade my Creator, i should get the same. maybe.
You just download other Creator from
https://download.qt.io/official_releases/qtcreator/4.2/4.2.1/
and run it ? -
@mrjj
No, I simply used the maintenance tool and used the second entry (updating/upgrading?).
Therefore, there could be also some updates invloved for the other tools. I did not pay attention, but it is probably save to assume that the installation for Qt5.4.2 stayed as it was.