Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] Possible to use the qtc-debugging-helper (Either DSF/CDI)

Unfortunately there are a lot of options for where such functionality could be hacked in. I was thinking of hacking VariableVMNode, by for example overriding createVMContext() and replacing the element that would be normally created and placed into the view with a different element, which does something different. However, hacking this code is difficult because the call back based implementation takes some time getting used to.

A simpler approach would be to do what bug 275238 did, which was to add a new value format, which evaluated an expression differently than the standard method.

I don't know anything about how the qtc-debugging-helper works in GDB so it's hard for me to recommend a specific solution.

Michael Jackson wrote:
It has been a while since I hacked on CDT. I take it I'll need a Helios-PDE installation with the CDT Sources checked out so I can self host? Off to to wiki to re-figure this out again..
If you describe how to access the qtc-debugger-helper from gdb I could let you know if this would be easy and possibly save you the trouble.


Pawel, could you provide just a bit more details about where to start hacking. I guess if I were to put a breakpoint in DSF/GDB to start investigating the sequence of events to get a value from the debugger and place it into the gui (or variable where it would end up in the gui) where would that be. Many Thanks

Mike Jackson            

On Apr 9, 2010, at 12:14 PM, Pawel Piech wrote:

There actually is a "generic pluggable value formatter" framework in eclipse, called logical structures, but DSF does not use it :-( I suppose this is another [cdi] parity bug. An option that you do have is to add a custom detail formatter which calls the custom command that the qtc-debugging-helper library expects.

If you have the option of hacking the DSF-GDB, then you could probably get it to do what you want with a little effort. You'd need to extend VariableVMProvider and VariableVMNode and add a step that checks a variable's type to see if it matches the Qt types, and use the alternative method of evaluating the expression.


Warren.Paul@xxxxxxxxx wrote:

I don't think your issue will be getting the value to display from qtc-debugging-helper but rather how to get the debugger to display it. I don't think there's a generic pluggable variable formatter. Right now it seems back-end specific with EDC having it's own, and GDB using pretty printers. Given that you're using a build of GDB that doesn't support pretty printers, you'd have to hack something together somehow.

As I said, our team will add Qt support to the EDC formatter, so the only missing piece for you then would be the Mac TCF agent. I'm not sure if anyone has considered writing such an agent yet or not, but this is probably the right forum to ask the question. :) I'm not a Mac guy so I can't say how much work that would be, but if the OS has any debug support (run control, memory/register access, breakpoints, etc), it shouldn't be too much effort.


-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of ext Michael Jackson
Sent: Friday, April 09, 2010 10:06 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] Possible to use the
qtc-debugging-helper (Either DSF/CDI)

Thanks for the info. At _some_ level it would seem to be
possible to add the functionality (even if it is a plugin of
some kind). It would seem that the qtc-debugging-helper
library sends back a response to a gdb request for the "value"
or maybe the QtCreator gdb wrapper figures out that the user
wants to look at a QString and then asks the library to dump
the values and such based on the pointer? Dunno. Can't really
follow along. I may inquire on the QtCreator Mailing list
garner some more info.

Mike Jackson <>

On Apr 9, 2010, at 10:36 AM, <Warren.Paul@xxxxxxxxx> wrote:

We've designed a powerful variable formatter in EDC which does the
basics like being able to change the display in the details

pain, but

also optionally allowing the children of the variable to be

changed as

well.  It also will allow (not fully implemented yet) modifying the
value in formatted form.  We will have support for Qt types in this
solution (also not yet implemented).

Unfortunately I don't think this does much to help you out since EDC
doesn't currently work on Mac, only Windows and Linux.  It would be
great to have someone do a TCF debug agent on Mac though.  :)  Maybe
you can focus your time on that and we'll provide the Qt formatting

I should mention that we really wanted to and tried to make this
feature non-EDC specific, but there were some technically

reasons why

it wouldn't work that I can't recall right now. :)  It may be that
only some of it is EDC specific, I'm not sure.  David Dubrow might
chime in if he's listening.


-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On Behalf Of ext

Michael Jackson

Sent: Friday, April 09, 2010 9:20 AM
To: CDT General developers list.
Subject: Re: [cdt-dev] Possible to use the qtc-debugging-helper
(Either DSF/CDI)

I forgot to mention that I am on "that troublesome platform, OS X"
where the only GDB that seems to work is the one from Apple

which is

like version 6.3 or something like that so using the Python Pretty
Printers will not work for this particular platform.

Now obviously since QtCreator does this sort of thing DSF

GDB should

be able to be made to do it also. I just have absolutely NO idea
where I would start looking. Even a hacked together proof

of concept

would motivate me to spend some late nights getting something

Mike Jackson <>

On Apr 9, 2010, at 10:13 AM, Elmenthaler, Jens wrote:

If you use gdb, you might want to check the python pretty printers
being supported by gdb 7.0 and later.

It effectively means to translate your qtc-debugging-helper

library to

python pretty printers, but this might be valuable anyway.

Both gdb integrations (DSF GDB would require the upcoming CDT 7.0)
have basic support for the pretty printers. Basic support

means the

info provided by the pretty printers appears in the

details pane of

variables and expressions view. But the children and

variables are not

the ones provided by the pretty printers.

I'm working on fully enabling them in the variables and


view (bug302121). That, however, will only work in DSF GDB.


-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-
bounces@xxxxxxxxxxx] On Behalf Of Michael Jackson
Sent: Freitag, 9. April 2010 16:04
To: CDT General developers list.
Subject: [cdt-dev] Possible to use the

qtc-debugging-helper (Either


 I do a bunch of Qt programming and I prefer to use

Eclipse CDT to

do my programming. The major hurdle that I have currently

is trying

debug Qt based code. Due to the design of the Qt classes when
trying to get the "value" of things like a QString gdb will just

send back a

pointer address that isn't really helpful. With Qt-Creator the
engineers at Nokia have implemented the qtc-debugging-helper
library which your project can link against.

 What I was wondering would be what type of code updates to CDT
(Either in CDI or DSF) would have to go into place in oder to
effectively use the code contained in the qtc-debugging-helper
library? Looking through the qtc-debugging-helper library

it seems

there are "pretty-printers" for the Qt Classes which can then be
piped back to the IDE making the request to display more helpful
values of a class rather then the internal pointer.

 I am motivated enough to start hacking in CDT to at least figure
out if this type of thing is even possible. Even better

would be some

help from Nokia to point me in the right direction ;-) ***

Mike Jackson            
Principal Software Engineer       mike.jackson@xxxxxxxxxxxxxx
BlueQuartz Software               Dayton, Ohio

*** I know this is basically helping out a rival product


Eclipse CDT) but I think would still be seen as a Win-Win for all

cdt-dev mailing list

Back to the top