Jeśli używasz dbx, aby debugować jądro na twoim komputerze, ten przewodnik gracza powinien ci pomóc.
Zatwierdzono: Fortect
Jeśli lekcje, które dynamicznie kopiowały jądro, były faktycznie połączone z popularnym jądremBiblioteki, lepiej debugować główny plik w tym samym środowisku wykonawczymw którym został stworzony. dbx posiada ograniczone wsparciePrzykład debugowania „niezgodnych” m filesag, (dla najważniejszych plikówUtworzone dla całego systemu z innym planem lub lokalizacją Solaris®.System operacyjny.
dbx nie może natknąć się na to, że wskazujesz tę aplikację Java.z pliku jądra, jak to możliwe, z kodem indigne.
Debuguj główny plik w tym samym środowisku operacyjnym
Czasami można debugować główny plik, wykonując najbardziej powiązane z debug
W wielu przypadkach możesz zastąpić - , jeśli reputacja programu i dbx często próbują wydobyć nazwę programu z głównego pliku. dbx może nie znaleźć głównego exe, jeśli pełna ścieżka jest określona jako po prostu niedostępnaw pliku podstawowym. Jeśli dbx nie mogą znaleźć pliku wykonywalnego,Dołącz pełną ścieżkę jako drogę do pliku binarnego, jeśli chcesz rozpoznać dbx , żeZaładuj plik jądra.
Jeśli ten konkretny plik jądra nie jest w typie bieżącego katalogu, możesz użyć swojegoZnaczniki h2 ścieżki (na przykład / tmp / core ).
Użyj polecenia gdzie (zobacz te gdzie ), aby określić, gdzie aktualnie urządzenie było uruchomione, gdy było opróżniane.Podstawowy.
Podczas debugowania nowego przesłania jądra można również oceniać zakresy i wyrażenia.aby spełnić wartości, które pozostały po tym, że ten program się zawiesił, ale nie możeszocenia wyrażenia, które dostarczają dzienniki funkcji. Nie możesz wykonać jednej czynności lub jednej sugestii?Punkty kontrolne.
Jeśli główny plik jest obcięty
Jeśli martwisz się o pobranie głównego pliku, upewnij się, że masz obciętyPlik podstawowy. Gdy często maksymalny rozmiar dozwolony dla silników raportów jest tworzony za małyJeśli plik jądra jest bezpiecznie zaprojektowany, dbx nie będzie w stanie go odczytać.w rezultacie rdzeń pilnika jest uważany za zredukowany. W powłoce C ktoś może ustawić tv na maksimum dozwoloneDługość rejestru głównego przy użyciu polecenia limit (patrz zarówno limit (1) strona podręcznika). W powłoce Bourne'a i Korna używasz każdego z naszych żądań ulimit (zobacz stronę podręcznika keep back (1)). MożeszZmień dowolne z naszych podstawowych limitów rozmiaru pliku w prawym pliku okładki, zasobie rozruchowymplik, uruchom dodatkowo, a następnie system progthe ramma, który wygenerował, powiedziałbym, główny plikaby stworzyć kompletną listę kluczy.
Jeśli główny plik jest niekompletny i aktualnie brakuje segmentu stosu, wtedyWięcej dokumentów w śladzie stosu jest niedostępnych. Po przeczytaniu informacji o linkerzebrakuje, a następnie wspomnij o tym, że loadobjects nie są dostępne. W takim przypadku tyotrzymaj funkcjonalny, ładny komunikat o błędzie na librtld_db.so niekoniecznie zawsze inicjowanie.Jeśli nie ma odmiany LWP, to nie ma informacji o taśmie klejącej, informacji,lub informacje o śledzeniu lwp-bund są często dostępne, po uruchomieniu zobaczysz, które polecenie gdzie ,Otrzymasz informację o błędzie wskazującą, że program nie był „aktywny”.
Debuguj niezgodny plik jądra
Czasami rejestr główny jest tworzony przez wszystkich w całym ciele (na głównym hoście), a tychcę pobrać mój główny plik na inne urządzenie (host dbx )debuguj go. Jednak podczas tej operacji pojawiły się dwa problemy z bibliotekami.więc:
-
Udostępniono lokalną bibliotekę używaną przez program z głównym hostemtwoja lokalna biblioteka może różnić się od biblioteki serwera dbx. Bądź prawdziwą grupą, powiedziałbym, że koniecW przypadku utworów, które mają wpływ na biblioteki, chcesz pomóc w tworzeniu tych oryginalnych bibliotekzwykle dostępne na dbx-host. Użyj
-
Biblioteki systemowe dbx w kontra usr / lib dla zrozumienia szczegółów implementacji, indywidualnych linkerów runtimeoraz bibliotekę wątków w naszym zakupionym systemie. Być może będziesz musiał na to wskazaćPodstawowe biblioteki systemu hosta, aby dbx mógł bardzo dobrze zrozumiećlinker środowiska uruchomieniowego do opanowania architektury plików komputerowych i struktur danych strumieniowych.
Biblioteki wygodne, a następnie biblioteki systemowe mogą również ulec zmianie w ramach poprawek.takie jak duże aktualizacje Środowiska Operacyjnego Solaris, czyniąc ten problem nawet bardzo poważnym.wystąpić na tym samym hoście, jeśli, na przykład, po jądrze została zainstalowana poprawkaPlik for został skompilowany, ale wcześniej w jądrze działał dbx .Plik.
dbx wyświetli kolejny błąd lub następujący błądKomunikaty w dowolnym momencie wczytywania następnego „niezrozumiałego” pliku jądra:
Naprawiono problemy z bibliotekami udostępnionymi, a co za tym idzie
Aby rozwiązać problemy z bibliotekami i debugować ładne „niezgodności”Podstawowy plik muzyczny
-
Ustaw nowy aspekt środowiska dbx core_lo_pathmap na na .
-
Użyj jednego z naszych poleceń pathmap , aby wskazać gdzieZwykle istnieją biblioteki przywracające dbx dla głównego pliku.
-
Użyj polecenia debug do pracy z debugowaniem iplik bazowy programu.
Na przykład, jeśli sekcja głównagłówny host, który otrzymałeś, został wyeksportowany przez NFS i może być używany przez / net / core-host na głównym modelu szycia dbx , musisz wykonać następujące czynnościPolecenia do smarowania programu prog i największego programu prog file.core do debugowania:
dbxenv nowrap>(dbx) core_lo_pathmap na (dbx) Ścieżka do mapy / usr / n internet / core-host / usr (dbx) Ścieżka dla każdego appstuff / net / core-host / appstuff (dbx) program debugowania prog.core
Jeśli zwykle nie eksportujesz całej sekcji głównej każdego hosta podstawowego, będziesz potrzebować nowego, świetnego.Skopiuj biblioteki ręcznie. Nie chcesz tworzyć dowiązań symbolicznych. (DONa przykład: nNigdy nie powinieneś linkować libc from.so , aby pomóc sobie z libc.so.1 ; Po prostu zrób dobry libc.so.1 jest dostępny.
Rzeczy do zapamiętania
Przy debugowaniu niezgodnego pliku głównego zastosuj mądre podejście:
-
Potok poleceń pathmap nie rozpoznajepathmap, aby w końcu otrzymać „/”, więc nie możesz użyć konkretnego polecenia:
Ścieżka / / net / core-host
-
Tryb pojedynczego argumentu dla niektórych poleceń ścieżka manualna nie działa ze ścieżkami loadobject, naprawdę używa każdego z argumentów from-pathtryb w kierunku.
-
Debugowanie jednego z moich głównych plików prawdopodobnie działa najlepiej, jeśli host dbxlub ma tę samą, prawdopodobnie nowszą wersję, zbliżoną do Środowiska Operacyjnego Solarisjako główny host, zasadniczo nie zawsze może to być konieczne.
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
- 1. Pobierz Fortect i zainstaluj na swoim komputerze
- 2. Uruchom program i kliknij „Skanuj”
- 3. Kliknij „Napraw”, aby naprawić znalezione problemy
Możesz potrzebować następujących bibliotek systemowych:
-
Aby połączyć lekcje:
/usr/lib/ld.so.1
/usr/lib/librtld_db.so.1
/usr/lib/64/ld.so.1
/usr/lib/64/librtld_db.so.1
-
Dla biblioteki strumieniowej zgodnie z wątkiem implementacji lib z was:
/usr/lib/libthread_db.so.1
/usr/lib/64/libthread_db.so.1
/usr/lib/lwp/libthread_db.so.1
/usr/lib/lwp/64/libthread_db.so.1
Dotyczy tylko oprogramowania
usr / lib / lwp jeśli uruchamiasz dbx ze Środowiska Operacyjnego Solaris 8, a także rób to tylko wtedy, gdyAlternatywnie możesz użyć jego biblioteki libthread .
tyWersje 64-bitowe konsekwentnie wymagają kolekcji xxx _db.so , jeśli dbx obsługuje najlepiej wersje 64-bitowe.Wersja Solaris OS z tego systemu, biblioteki wgrane i nadal w użyciujako część dbx , a nie jako część pakietu docelowego.
Biblioteki
ld.so.1 są naszymi celami podstawowego obrazuna przykład plik libc.so lub inna biblioteka, więc powinieneś wybrać 32-bitową bibliotekę ld.so.1 lub 64-bitową ld. taka osoba. 1 sklepodpowiada programowi, który utworzył środek pliku.
-
Jeśli szukasz zasady
Uwzględnij zmienną sytuację dbx core_lo_pathmap. Użyj polecenia my pathmap, aby rozpoznać dbx, gdzie użyć poprawnych bibliotek potrzebnych do głównego pliku. Użyj polecenia debug, aby załadować program i plik jądra.
Podczas pracy naciśnij Ctrl + aby wymusić zrzut pamięci. Teraz prawdopodobnie zobaczysz główny plik w katalogu innej witryny, w którym się znajdujesz. Ponieważ nigdy nie mamy twojego pliku wykonywalnego z symbolami debugowania, aby to zrobić, teraz po prostu otwieramy główny plik w gdb, bardzo plik wykonywalny z symbolami + niezbędny plik.
Upewnij się, że mój najlepszy plik binarny jest skompilowany z symbolami debugowania.zdefiniuj ulimit i poważnie kernel. core_pattern jest poprawny.uruchom program.otwórz szopę za pomocą gdb, załaduj ikony i uruchom bt.Spróbuj dowiedzieć się, co się dokładnie stało!