https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61574
Bug ID: 61574 Summary: Confusing .debug_line generation by -g option Product: gcc Version: 4.8.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jamesgua at ca dot ibm.com #include <iostream> #include <string> using namespace std; int main(int argc, char** argv) { string str1 = "Hello"; string str2; str2 = str1; cout << "str2: " << str2 << ", and same as str1: " << str1 << endl; str2 += "World!"; cout << "Now str2: " << str2 << endl; return 0; } g++ -g -osample sample.cpp gdb ./sample ... Breakpoint 1, main (argc=1, argv=0x3ffffffff4f8) at sample.cpp:17 17 return 0; (gdb) n 9 string str2; (gdb) 17 return 0; (gdb) 18 } ... This is really confusing and out of sequential execution expectation. It happens on x86_64/ppcl4le platform using g++ 4.8.2. Output from cmd: readelf --debug-dump=decodedline sample ... sample.cpp 17 0x10000e90 sample.cpp 9 0x10000e94 sample.cpp 17 0x10000ea4 sample.cpp 9 0x10000ee4 sample.cpp 17 0x10000efc ...