Code::Blocks

User forums => Using Code::Blocks => Topic started by: ollydbg on December 03, 2011, 02:50:23 am

Title: Why C::B over write gdb's set print element value?
Post by: ollydbg on December 03, 2011, 02:50:23 am
I see when start gdb, it is:
Code: [Select]
set print elements -1
This cause some problems, such as when a large String is put as a function argument(maybe, the wxString was loaded from a txt file), this will show all the contents of the String in the debugger log.

So, I think we can leave it as gdb default value is 200.
See:
Print Settings - Debugging with GDB (http://sourceware.org/gdb/current/onlinedocs/gdb/Print-Settings.html#Print-Settings)
Title: Re: Why C::B over write gdb's set print element value?
Post by: jens on December 03, 2011, 02:30:21 pm
You should say, that it is only for the debugger-branch, not for trunk.

What I don't understand is, what the value of -1 means, because a value of 0 means unlimited.
Title: Re: Why C::B over write gdb's set print element value?
Post by: ollydbg on December 03, 2011, 02:36:06 pm
You should say, that it is only for the debugger-branch, not for trunk.
Oh, sorry, I use only debugger branch these days.
Quote
What I don't understand is, what the value of -1 means, because a value of 0 means unlimited.
Yes, as the gdb document said, it should be 0 (not -1).
Title: Re: Why C::B over write gdb's set print element value?
Post by: oBFusCATed on December 04, 2011, 04:11:14 pm
This is the reason:
http://svn.berlios.de/wsvn/codeblocks/branches/wxpropgrid_debugger/src/plugins/debuggergdb/gdb_driver.cpp?op=revision&rev=6393&peg=7585

ollydbg: can you give an example code?
Title: Re: Why C::B over write gdb's set print element value?
Post by: ollydbg on December 05, 2011, 01:58:30 am
ollydbg: can you give an example code?
The sample code below:
Quote
int main()
{
    char * p = new char[4000];
    p[1]=4;//set breakpoint here
    return 0;
}

You can just "print p" at the breakpoint, then gdb will show many trash.

Also, if the pointer p is passed to a function call. then when you run a "backtrace", the trash will be shown too.
Title: Re: Why C::B over write gdb's set print element value?
Post by: oBFusCATed on January 06, 2012, 12:29:28 am
OK, I've added a way to control the value of the printed elements.
See Debug -> Information -> Print Elements.
Title: Re: Why C::B over write gdb's set print element value?
Post by: ollydbg on January 06, 2012, 01:50:54 am
OK, I've added a way to control the value of the printed elements.
See Debug -> Information -> Print Elements.
Thanks for implement this feature, I will test it ASAP.
Title: Re: Why C::B over write gdb's set print element value?
Post by: ollydbg on January 06, 2012, 02:10:10 am
The variable name:
Code: [Select]
m_printElementsshould be:
Code: [Select]
m_PrintElementsright?
Title: Re: Why C::B over write gdb's set print element value?
Post by: oBFusCATed on January 06, 2012, 08:54:35 am
I prefer the first version.
Title: Re: Why C::B over write gdb's set print element value?
Post by: ollydbg on January 06, 2012, 09:46:06 am
I prefer the first version.
Me too.  :)
But the C::B's coding standard (some page in the wiki) said we should use second version.
Title: Re: Why C::B over write gdb's set print element value?
Post by: MortenMacFly on January 06, 2012, 10:09:41 am
But the C::B's coding standard (some page in the wiki) said we should use second version.
This one:
http://wiki.codeblocks.org/index.php?title=Coding_style