Ето една проста програма:
#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;
}
компилиран с gcc 4.7.3 на Macport:
g++-mp-4.7 -g -O0 prog.cc -o prog
Ако се опитам да отстраня грешки в gdb 7.7 (самокомпилиран, не този на Macport!):
$gdb
file prog
b main
r
s
Не мога да вляза във функцията:
34 problem.run();
(gdb) s
here..
36 return 0;
(gdb)
Правя ли нещо нередно? Или изглежда като грешка на gdb, когато се използва на os-x mavericks?
АКТУАЛИЗАЦИЯ:
Не виждам никакви предупреждения/грешки при използване на 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)
също '-gdwarf-2 -gstrict-dwarf' не променят поведението....
UDAPTE2:
Виждам същото липсващо поведение на стека за извикване като тук. Въпреки че не успях да проверя дали компилирането с -m32
помага в моя случай, тъй като имам всичко за 64 бита и по този начин получавам проблеми с undefined symbols
.
Друг проблем със стъпката по време на отстраняване на грешки се съобщава тук и тук на ТАК.