mam ustawić punkty przerwania na wyjściu i _exit i mojego programu (wielowątkowych aplikacji, działa na Linux 2.6.16.46-0.12 sles10) jest jakoś nadal wychodzącego w sposób nie mogę zlokalizowaćustawienie przerwania wyjścia gdb nie działa?
(gdb) c ... [New Thread 47513671297344 (LWP 15279)] [New Thread 47513667103040 (LWP 15280)] [New Thread 47513662908736 (LWP 15281)] Program exited with code 0177. (gdb)
wyjście funkcje znajdują się w bibliotece libc, więc nie ma problemów z dzieloną biblioteką z odroczonym ładowaniem. Ktoś wie o jakimś tajemniczym spuście do wyjścia, którego nie można złapać?
EDYCJA: problem jest teraz tylko akademicki. Próbowałem debugowania binarnego wyszukiwania, wycofując podzbiór moich zmian (problem zniknął). Po ich ponownym zastosowaniu ponownie, nie mogę już repro problem, nawet z rzeczy przywrócone do pierwotnego stanu.
EDIT2: Ostatnio znalazłem jeden powód tego rodzaju błędu, który mógł być oryginalnym źródłem tego problemu. Z przyczyn historycznych nasz produkt wykorzystuje flagę zła linker -Bsymbolic. Jednym z efektów ubocznych tego jest to, że gdy symbol jest nieokreślony, ale wywoływany, linker środowiska wykonawczego GLIBC będzie bombardował dokładnie w ten sposób, a zobaczysz go w debugerze jako proces zakończony z 0177. Kiedy linker środowiska wykonawczego przerwie tę operację, 'zgadnij, że to sprawia, że syscall _exit bezpośrednio (zamiast używać biblioteki wyjścia C() lub _exit()). Byłoby to zgodne z faktem, że nie byłem w stanie złapać tego z punktami przerwania wyjścia w debugerze.
Spróbuję zbudować gdb 7 i zobaczyć, co to pokazuje. i * i daje ten sam adres nauczania:
(wygląda dość standardowym syscall). Myślę, że przynajmniej wyizolowałem zmianę kodu prowadzącą do tego tajemniczego wyjścia, ale nie rozumiem jeszcze szczegółów. –Byłoby lepiej użyć 'catch syscall exit' i' catch syscall exit_group' zamiast wartości numerycznych. Na moim systemie na przykład 'exit' to' [1] 'not' [60]'. – Ruslan
Dodatkowo, możesz ustawić obie jednocześnie: 'catch syscall exit exit_group'. W rzeczywistości, edytując go teraz ... –