Some time ago Locals and Expressions view in QtCreator just stopped working for me. No locals were listed when the program stopped on a breakpoint, watches did not show the values, hovering with the mouse over a variable in the editor did not show its value in a tooltip. No fiddling with IDE options helped. This was on Windows using compiler from Visual C++ and CDB as a debugger.
It was quite annoying but I was mostly working on UI at that time and could live with occasional dumping of few variables into a log. Few weeks later I moved to some math heavy stuff and the situation became desperate — I had to fix this!
At first, I suspected the debugger or the compiler. Since reinstalling and trying different versions did not help I also tried different versions of Qt and QtCreator itself. Still broken. And Googling for broken CDB only revealed problems with CDB getting unusably slow.
After QtCreator reinstall, I noticed the settings were preserved from the old version. So maybe they are somehow corrupted? I found them in C:\Users\username\AppData\Roaming\QtProject\qtcreator\
, made a backup of that folder, and deleted it. And it started working! Locals and Expressions were back!
Of course, I also wanted my old settings back. So I switched back to the old settings and started QtCreator again and to my surprise it still worked! I took a closer look and saw that the problem lies in the session file (*.qws) — when I previously deleted the settings folder QtCreator created a new session for me and this one I reopened in the IDE after the switch back to the old settings (just copied the files into the folder so the new session file stayed there).
So I opened the session file with an intention to start deleting suspicious stuff until it works. It's a XML file and apart from one big base64 blob there is not much else. Besides a breakpoint list, the only thing that seemed related to debugging was a list of maybe ten old watch expressions (which were not listed in the IDE anymore!). I deleted it and voilà, I could see the values of locals and variables again!
After a few weeks, debugging started to get slow. Stepping over code took a few seconds and values of the variables showed up only after considerable time (tens of seconds). This time I knew what to do, deleting watch expressions from the session file helped again. So I came to the conclusion that in the first case the values could eventually show up after a few minutes (stepping over code was not slowed down though). It was just very very slow. Then the Googled complaints about slow CDB made more sense to me. And indeed, I found out someone fixed it the same way but I was not paying attention to just slow debugging before, I was looking for broken debugging!
Recapitulation
- Debugging in QtCreator using CDB in Windows is very slow and/or values of locals and expressions never show up.
- Go to the folder where QtCreator stores your session file (
C:\Users\username\AppData\Roaming\QtProject\qtcreator\
).
- Open the session file (*.qws) in text editor and look for this XML subtree:
<data>
<variable>value-Watchers</variable>
<valuelist type="QVariantList">
<value type="QString">some expression 1</value>
<value type="QString">some expression 2</value>
<value type="QString">some expression 3</value>
</valuelist>
</data>
- Delete this subtree (or just the expressions) and save the file.
- Start QtCreator, open the fixed session, and do some debugging.
Edit: If this doesn't help check also Debugging with CDB in QtCreator Agonizingly Slow.