Mój program jest skompilowany z flagą -g
. Mam następujący problem:gdb: wewnętrzne ustawienia błędów granicznych
1) Ustawiłem punkt przerwania w funkcji, która znajduje się w pliku nagłówkowym.
Punkt przerw działa. Teraz, kiedy mam dwa poziomy wyżej, powinien mnie zabrać do pliku C (Sizer.C: 505). To robi, ale dostaję mnóstwo ostrzeżeń:
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6324 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
#2 0x0000000000ff6324 in SizePacketImpl<ZValue>::begin_x (this=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
0x4888a88, bi=warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
0x56e6968) at Sizer.C:505
505 ASSERTo(...some parameters ....);
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
2) Gdybym TERAZ (po przejściu dwupoziomowa się, gdy program jest w stanie rozpadu) starają się bezpośrednio ustawić punkt przerwania w Sizer.C
(gdb) break Sizer.C:504
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
Breakpoint 3 at 0xff1bc7: file Sizer.C, line 504.
warning: (Internal error: pc 0xff6323 in read in psymtab, but not in symtab.)
Program nie zatrzymuje się w punkcie przerwania.
3) Tylko dla kompletności: Jeśli ustawię punkt przerwania w Sizer.C przed uruchomieniem programu, nie otrzymam ostrzeżeń, ale program nadal się nie psuje.
Chcę ustawić punkty przerwania w Sizer.C. Jak mogę debugować i naprawić ten problem?
Używam 6.3.0. Niestety, nie rozumiem Twojego obejścia. Gdzie mam to położyć? –
Myślę, że część aktualizacji nie ma znaczenia dla tego konkretnego przypadku. Jest to związane z ręcznym kompilowaniem gdb. Zignoruj to. –
Aktualizacja do wersji 7.1 rozwiązała problemy. Dzięki :) –