Code::Blocks Forums

User forums => Help => Topic started by: su1 on February 21, 2012, 03:30:03 PM

Title: Watch a complex struct when debugging
Post by: su1 on February 21, 2012, 03:30:03 PM
Hello,

in my code I define a struct like this:

 
Individuals *individuals = NULL;
individuals = malloc(10*sizeof(Individuals));


When debugging, I know how to watch one individual at a time, by Right click > Adding watch > individuals[3] for example.

But I would like to be able to follow easily the values in every structure in individuals, ie individuals[0], individuals[1], etc... on the same screen (like what I've seen XCode is doing).

Is there a way to do that?

Thanks.
Title: Re: Watch a complex struct when debugging
Post by: oBFusCATed on February 21, 2012, 04:05:10 PM
Screen shot?
Title: Re: Watch a complex struct when debugging
Post by: su1 on February 22, 2012, 09:11:22 AM
Screenshot of what? I can't give you a screen shot of what I want and don't have...  :D

But here's a screenshot of what I have for now:

(http://img204.imageshack.us/img204/1343/screenshotjpr.th.png) (http://imageshack.us/photo/my-images/204/screenshotjpr.png/)

As you can see, I can easily access individuals[1], or individuals[2],... But I would like to have in the same watch:

individuals[1]  individuals[2]      ...

offer             offer                 ...
request         request             ...
strength        strength            ...

Title: Re: Watch a complex struct when debugging
Post by: oBFusCATed on February 22, 2012, 09:37:38 AM
What you tried Right click -> Properties -> Watch as array?
Title: Re: Watch a complex struct when debugging
Post by: su1 on February 22, 2012, 10:02:14 AM
I guess you mean Right click -> Edit watch -> Watch as array?

So yes I've tried, when I do this I obtain


*individuals

[0] offer             
[1] request         
[2] strength       
...


instead of

*individuals

offer             
request         
strength       
...


but still not what I want:


individuals[1]  individuals[2]      ...

offer             offer                 ...
request         request             ...
strength        strength            ...


It seems like the watch *individuals only shows individuals[0]
Title: Re: Watch a complex struct when debugging
Post by: killerbot on February 22, 2012, 10:27:56 AM
QuoteIt seems like the watch *individuals only shows individuals[0]
Which is actually correct. NOte that C -arrays are not real arrays/vectors. The name of the C-arrays decays into a pointer to the type ==> *individuals is then actually the same as :

int * foo = new int();

*foo;  // <-- same thing here
Title: Re: Watch a complex struct when debugging
Post by: oBFusCATed on February 22, 2012, 10:40:55 AM
su1: Also it might be a good idea to try the debugger's branch nightly build or build a version directly from svn (wxpropgrid_debuggers).
Title: Re: Watch a complex struct when debugging
Post by: su1 on February 22, 2012, 11:12:18 AM
Hey,

thanks for the tips, but it starts to be just over my competences to do that and would take me too much time that I don't have right now.

I was just checking if there was an easy solution, otherwise I'll just use seperate watches for individuals[0], individuals[1], etc..., even if it's not really user-friendly.