From: asmwarrior <asmwarrior@gmail.com>
To: gdb@sourceware.org, gcc@gcc.gnu.org
Subject: Two debug entries for one local variables, is it a bug in GCC or GDB
Date: Fri, 09 Jul 2010 02:35:00 -0000 [thread overview]
Message-ID: <4C368A68.9010308@gmail.com> (raw)
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)
next reply other threads:[~2010-07-09 2:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-09 2:35 asmwarrior [this message]
2010-07-09 5:58 ` Nenad Vukicevic
2010-07-09 6:04 ` asmwarrior
2010-07-10 4:09 ` Daniel Berlin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C368A68.9010308@gmail.com \
--to=asmwarrior@gmail.com \
--cc=gcc@gcc.gnu.org \
--cc=gdb@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox