Here is a simple program:
#include <iostream>
#include <vector>
namespace Example
{
template <int dim>
class Problem
{
public:
void run() {
std::cout<<"here.."<<std::endl;
}
};
}
int main(int argc, char *argv[])
{
Example::Problem<2> problem;
problem.run();
return 0;
}
compiled with Macport's gcc 4.7.3:
g++-mp-4.7 -g -O0 prog.cc -o prog
If I try to debug in gdb 7.7 (self-compiled, not Macport's one!):
$gdb
file prog
b main
r
s
I can't step-in the function:
34 problem.run();
(gdb) s
here..
36 return 0;
(gdb)
Am i doing something wrong? Or does it look like a bug of gdb when used on os-x mavericks?
UPDATE:
I don't see any warning/errors when using gdb:
$ gdb ./prog
GNU gdb (GDB) 7.7
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin13.1.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./prog...Reading symbols from /Users/bla-bla-bla/prog.dSYM/Contents/Resources/DWARF/prog...done.
done.
(gdb)
also '-gdwarf-2 -gstrict-dwarf' do not change the behaviour....
UDAPTE2:
I see the same missing call-stack behaviour as here. Although I was not able to check if compiling with -m32
helps in my case, since I have everything for 64bit and thus get undefined symbols
problems.
Another stepping problem while debugging is reported here and here on SO.
You need to add -gdwarf-2 option along with -g to debug using gdb for newer version of gcc.