Two debug entries for one local variables, is it a bug in GCC or GDB
Nenad Vukicevic
nenad@intrepid.com
Fri Jul 9 05:58:00 GMT 2010
I reported something similar back in January:
http://gcc.gnu.org/ml/gcc/2010-01/msg00054.html
As I recall, GCC creates duplicates.
Nenad
On 7/8/10 7:33 PM, asmwarrior wrote:
> I have post this message to both GCC and GDB, because I'm not sure it
> is a bug in GDB or GCC.
> Hi, I have just find two dwarf debug entries for one local variables.
>
> For example, the sample code is just like:
>
> -----------------------------------------
>
> wxString ParserThread::ReadAncestorList()
> {
>
> wxString ccc;
> wxString templateArgument;
> wxString aaa;
> aaa = m_Tokenizer.GetToken(); // eat ":"
> templateArgument = aaa;
> while (!TestDestroy())
> {
>
> //Peek the next token
> wxString next = m_Tokenizer.PeekToken();
>
> if (next.IsEmpty()
> || next==ParserConsts::opbrace
> || next==ParserConsts::semicolon ) // here, we are at the
> end of ancestor list
> {
> break;
> }
> else if (next==ParserConsts::lt) // class AAA : BBB<
> int, float>
> {
> wxString arg = SkipAngleBraces();
> if(!arg.IsEmpty()) // find a matching<>
> {
> templateArgument<<arg;
> }
> else
> {
> TRACE(_T("Not Matching<> find. Error!!!") );
> }
> }
> ...
> -------------------------------------------
>
> But I found that GDG can show the wxString aaa correctly, but wxString
> templateArgument incorrectly.
>
> I have just check the debug information in the object file.
> and found that there are two entries for local variable
> "argumentTemplate", but only one entry for "aaa".
>
> --------------------------------------------
> <2><40a9f>: Abbrev Number: 182 (DW_TAG_variable)
> <40aa1> DW_AT_name : (indirect string, offset: 0x1095):
> templateArgument
> <40aa5> DW_AT_decl_file : 19
> <40aa6> DW_AT_decl_line : 2593
> <40aa8> DW_AT_type :<0xd168>
> <40aac> DW_AT_accessibility: 3 (private)
> <40aad> DW_AT_location : 2 byte block: 53 6 (DW_OP_reg3;
> DW_OP_deref)
> <2><40ab0>: Abbrev Number: 164 (DW_TAG_lexical_block)
> <40ab2> DW_AT_ranges : 0x168
> <3><40ab6>: Abbrev Number: 165 (DW_TAG_variable)
> <40ab8> DW_AT_name : ccc
> <40abc> DW_AT_decl_file : 19
> <40abd> DW_AT_decl_line : 2592
> <40abf> DW_AT_type :<0xd168>
> <40ac3> DW_AT_location : 2 byte block: 91 50 (DW_OP_fbreg: -48)
> <3><40ac6>: Abbrev Number: 179 (DW_TAG_variable)
> <40ac8> DW_AT_name : (indirect string, offset: 0x1095):
> templateArgument
> <40acc> DW_AT_decl_file : 19
> <40acd> DW_AT_decl_line : 2593
> <40acf> DW_AT_type :<0xd168>
> <40ad3> DW_AT_location : 2 byte block: 91 4c (DW_OP_fbreg: -52)
> <3><40ad6>: Abbrev Number: 165 (DW_TAG_variable)
> <40ad8> DW_AT_name : aaa
> <40adc> DW_AT_decl_file : 19
> <40add> DW_AT_decl_line : 2594
> <40adf> DW_AT_type :<0xd168>
> <40ae3> DW_AT_location : 2 byte block: 91 48 (DW_OP_fbreg: -56)
> <3><40ae6>: Abbrev Number: 170 (DW_TAG_lexical_block)
>
> ------------------------------------------------------------------------------
>
> Also, you can see the screen shot in my Codeblocks forums' post:
>
> http://forums.codeblocks.org/index.php/topic,12873.msg86906.html#msg86906
>
>
> So, my question is:
>
> Is this a bug in GCC or GDB? ( I have just test the MinGW GCC 4.5 and
> MinGW 4.4.4, they get the same result)
>
>
> Thanks
>
> Asmwarrior (ollydbg from codeblocks' forum)
>
More information about the Gdb
mailing list