reklama - zainteresowany?

Linux. Niezbędnik programisty - Helion

Linux. Niezbędnik programisty
Autor: John Fusco
Tytuł oryginału: The Linux Programmer's Toolbox
Tłumaczenie: Mikołaj Szczepaniak
ISBN: 978-83-246-1485-1
stron: 736, Format: 200x230, okładka: miękka
Data wydania: 2009-03-06
Księgarnia: Helion

Cena książki: 149,00 zł

Dodaj do koszyka Linux. Niezbędnik programisty

Tagi: Linux

Wszystko, czego potrzebujesz,
aby tworzyć wydajny, elastyczny i bezbłędny kod!

  • Jaki edytor wybrać?
  • Jak dziaÅ‚ajÄ… systemy kontroli wersji?
  • Jak zapewnić wysokÄ… wydajność oraz bezbÅ‚Ä™dne dziaÅ‚anie tworzonych rozwiÄ…zaÅ„?

Programista, jak każdy fachowiec, posiada perfekcyjnie dobrany zestaw narzędzi, pozwalający mu na szybkie, wygodne, elastyczne i - co najważniejsze - optymalne rozwiązywanie postawionych problemów. Wybranie odpowiednich narzędzi i skomponowanie ich zbioru zabiera często wiele dni, miesięcy, a nawet i lat. A przecież my, programiści, nie mamy aż tyle czasu! Koniecznie trzeba znaleźć jakiś szybszy sposób!

Najlepszą odpowiedzią na ten problem jest właśnie niniejsza książka. Dzięki niej opanujesz sposoby pobierania i instalacji różnych narzędzi, a nowo nabyta wiedza na temat sposobów zarządzania pakietami w różnych dystrybucjach na pewno nie pójdzie na marne. W kolejnych rozdziałach poznasz przebieg procesu kompilacji oraz dowiesz się, jak interpretować poszczególne błędy i ostrzeżenia. John Fusco omawia tu także edytory Vim oraz Emacs - ale nie wskazuje, który z nich jest lepszy! Dzięki książce "Linux. Niezbędnik projektanta" wykorzystanie systemów kontroli wersji nie będzie stanowiło dla Ciebie najmniejszego problemu. Na kolejnych stronach szczegółowo omawiane są zasady funkcjonowania jądra systemu oraz sposób działania procesów i komunikacji między nimi. Lektura kolejnych rozdziałów dostarczy Ci niezbędnych informacji na temat zapewniania wysokiej wydajności tworzonych rozwiązań oraz metod diagnozowania problemów z oprogramowaniem.

  • Zdobywanie i instalacja oprogramowania open source
  • Proces kompilacji kodu źródÅ‚owego
  • ZarzÄ…dzanie pakietami w różnych dystrybucjach
  • Interpretacja komunikatów o bÅ‚Ä™dach i ostrzeżeÅ„
  • Edytory plików tekstowych
  • Wykorzystanie systemów kontroli wersji
  • Funkcjonowanie jÄ…dra systemu operacyjnego Linux
  • Wykorzystanie procesów
  • Komunikacja miÄ™dzy procesami
  • Diagnozowanie problemów z komunikacjÄ… pomiÄ™dzy procesami
  • ZwiÄ™kszanie wydajnoÅ›ci tworzonych rozwiÄ…zaÅ„
  • Wykrywanie problemów w napisanym oprogramowaniu

Dodaj do koszyka Linux. Niezbędnik programisty

 

Osoby które kupowały "Linux. Niezbędnik programisty", wybierały także:

  • Administracja systemem Linux. Kurs video. Przewodnik dla poczÄ…tkujÄ…cych
  • Systemy operacyjne. Architektura, funkcjonowanie i projektowanie. Wydanie IX
  • Gray Hat C#. JÄ™zyk C# w kontroli i Å‚amaniu zabezpieczeÅ„
  • Python dla administrator
  • Bash. Techniki zaawansowane. Kurs video. ZostaÅ„ administratorem systemów IT

Dodaj do koszyka Linux. Niezbędnik programisty

Spis treści

Linux. Niezbędnik programisty -- spis treści

Słowo wstępne (17)

Przedmowa (19)

Podziękowania (25)

O autorze (27)

Rozdział 1. Pobieranie i instalacja narzędzi oferowanych w trybie open source (29)

  • 1.1. Wprowadzenie (29)
  • 1.2. Czym jest tryb open source? (30)
  • 1.3. Co idea otwartego dostÄ™pu do kodu źródÅ‚owego oznacza dla nas? (30)
    • 1.3.1. Odnajdywanie wÅ‚aÅ›ciwych narzÄ™dzi (31)
    • 1.3.2. Formaty dystrybucji oprogramowania (32)
  • 1.4. Wprowadzenie do tematyki plików archiwalnych (33)
    • 1.4.1. Identyfikacja plików archiwalnych (35)
    • 1.4.2. PrzeglÄ…danie zawartoÅ›ci plików archiwalnych (36)
    • 1.4.3. Rozpakowywanie plików z pliku archiwalnego (40)
  • 1.5. Poznajmy wykorzystywany menedżer pakietów (42)
    • 1.5.1. Wybór pomiÄ™dzy kodem źródÅ‚owym a wersjÄ… binarnÄ… (43)
    • 1.5.2. Praca z pakietami (46)
  • 1.6. Kilka sÅ‚ów o bezpieczeÅ„stwie w kontekÅ›cie pakietów (46)
    • 1.6.1. Potrzeba uwierzytelniania (48)
    • 1.6.2. Podstawowe uwierzytelnianie pakietów (49)
    • 1.6.3. Uwierzytelnianie pakietów z podpisami cyfrowymi (51)
    • 1.6.4. Podpisy narzÄ™dzia GPG, stosowane dla pakietów RPM (52)
    • 1.6.5. Kiedy uwierzytelnienie pakietu jest niemożliwe (56)
  • 1.7. Analiza zawartoÅ›ci pakietu (57)
    • 1.7.1. Jak analizować pobrane pakiety (59)
    • 1.7.2. SzczegóÅ‚owa analiza pakietów RPM (61)
    • 1.7.3. SzczegóÅ‚owa analiza pakietów Debiana (62)
  • 1.8. Aktualizowanie pakietów (64)
    • 1.8.1. APT 3 Advanced Package Tool (66)
    • 1.8.2. YUM 3 Yellowdog Updater Modified (67)
    • 1.8.3. Synaptic 3 nakÅ‚adka narzÄ™dzia APT z graficznym interfejsem użytkownika (67)
    • 1.8.4. up2date 3 narzÄ™dzie aktualizujÄ…ce pakiety dystrybucji Red Hat (69)
  • 1.9. Podsumowanie (71)
    • 1.9.1. NarzÄ™dzia użyte w tym rozdziale (71)
    • 1.9.2. MateriaÅ‚y dostÄ™pne w internecie (72)

RozdziaÅ‚ 2. Kompilacja kodu źródÅ‚owego (73)

  • 2.1. Wprowadzenie (73)
  • 2.2. NarzÄ™dzia kompilujÄ…ce (74)
    • 2.2.1. Rys historyczny (74)
    • 2.2.2. Zrozumieć program make (77)
    • 2.2.3. Jak przebiega proces Å‚Ä…czenia programów (103)
    • 2.2.4. Zrozumieć biblioteki (104)
  • 2.3. Proces kompilacji (109)
    • 2.3.1. NarzÄ™dzia kompilacji GNU (110)
    • 2.3.2. Etap konfiguracji (skrypt configure) (111)
    • 2.3.3. Etap kompilacji 3 narzÄ™dzie make (113)
    • 2.3.4. Etap instalacji 3 polecenie make install (114)
  • 2.4. Zrozumieć bÅ‚Ä™dy i ostrzeżenia (115)
    • 2.4.1. Typowe bÅ‚Ä™dy w plikach Makefile (115)
    • 2.4.2. BÅ‚Ä™dy na etapie konfiguracji (119)
    • 2.4.3. BÅ‚Ä™dy na etapie kompilacji (120)
    • 2.4.4. Zrozumieć bÅ‚Ä™dy kompilatora (124)
    • 2.4.5. Zrozumieć ostrzeżenia kompilatora (126)
    • 2.4.6. Zrozumieć bÅ‚Ä™dy programu Å‚Ä…czÄ…cego (138)
  • 2.5. Podsumowanie (140)
    • 2.5.1. NarzÄ™dzia użyte w tym rozdziale (140)
    • 2.5.2. MateriaÅ‚y dostÄ™pne w internecie (141)

Rozdział 3. Szukanie pomocy (143)

  • 3.1. Wprowadzenie (143)
  • 3.2. NarzÄ™dzia pomocy elektronicznej (144)
    • 3.2.1. Strona man (144)
    • 3.2.2. Organizacja stron man (145)
    • 3.2.3. Przeszukiwanie stron man - narzÄ™dzie apropos (149)
    • 3.2.4. Poszukiwanie wÅ‚aÅ›ciwych stron man - polecenie whatis (151)
    • 3.2.5. Czego należy szukać na stronach man (152)
    • 3.2.6. Kilka szczególnie przydatnych stron man (153)
    • 3.2.7. NarzÄ™dzie info projektu GNU (155)
    • 3.2.8. PrzeglÄ…danie stron info (156)
    • 3.2.9. Przeszukiwanie stron info (159)
    • 3.2.10. Zalecane strony info (160)
    • 3.2.11. NarzÄ™dzia pomocy uruchamiane na pulpicie (160)
  • 3.3. PozostaÅ‚e źródÅ‚a pomocy (162)
    • 3.3.1. Katalog /usr/share/doc (162)
    • 3.3.2. OdwoÅ‚ania do innych stron oraz mechanizmy indeksowania (163)
    • 3.3.3. Zapytania kierowane do pakietów (164)
  • 3.4. Formaty dokumentacji (166)
    • 3.4.1. Formaty TeX, LaTeX i DVI (166)
    • 3.4.2. Format Texinfo (167)
    • 3.4.3. Format DocBook (168)
    • 3.4.4. JÄ™zyk HTML (169)
    • 3.4.5. JÄ™zyk PostScript (171)
    • 3.4.6. Format PDF (173)
    • 3.4.7. JÄ™zyk troff (174)
  • 3.5. ŹródÅ‚a informacji w internecie (174)
    • 3.5.1. Witryna http://www.gnu.org/ (175)
    • 3.5.2. Witryna http://SourceForge.net/ (175)
    • 3.5.3. Witryna projektu The Linux Documentation Project (176)
    • 3.5.4. Grupy dyskusyjne Usenet (177)
    • 3.5.5. Listy dyskusyjne (177)
    • 3.5.6. PozostaÅ‚e fora (178)
  • 3.6. Odnajdywanie informacji o jÄ…drze systemu Linux (178)
    • 3.6.1. Kompilacja jÄ…dra (178)
    • 3.6.2. ModuÅ‚y jÄ…dra (180)
    • 3.6.3. PozostaÅ‚e źródÅ‚a dokumentacji (182)
  • 3.7. Podsumowanie (182)
    • 3.7.1. NarzÄ™dzia użyte w tym rozdziale (182)
    • 3.7.2. MateriaÅ‚y dostÄ™pne w internecie (183)

RozdziaÅ‚ 4. Edycja i konserwacja plików źródÅ‚owych (185)

  • 4.1. Wprowadzenie (185)
  • 4.2. Edytor tekstu (186)
    • 4.2.1. Edytor domyÅ›lny (188)
    • 4.2.2. Jakich funkcji należy szukać w edytorze tekstu (188)
    • 4.2.3. Wielka dwójka - vi oraz Emacs (190)
    • 4.2.4. Vim - udoskonalony edytor vi (191)
    • 4.2.5. Edytor Emacs (215)
    • 4.2.6. Atak klonów (227)
    • 4.2.7. Podstawowe informacje o kilku edytorach tekstu z graficznym interfejsem użytkownika (230)
    • 4.2.8. Wymagania pamiÄ™ciowe (235)
    • 4.2.9. Podsumowanie wiadomoÅ›ci o edytorach (237)
  • 4.3. Kontrola wersji (238)
    • 4.3.1. Podstawy kontroli wersji (238)
    • 4.3.2. Terminologia obowiÄ…zujÄ…ca w Å›wiecie kontroli wersji (240)
    • 4.3.3. NarzÄ™dzia pomocnicze (243)
    • 4.3.4. Podstawy poleceÅ„ diff i patch (243)
    • 4.3.5. PrzeglÄ…danie i scalanie zmian (247)
  • 4.4. UpiÄ™kszacze i przeglÄ…darki kodu źródÅ‚owego (254)
    • 4.4.1. UpiÄ™kszacze wcięć w kodzie źródÅ‚owym (255)
    • 4.4.2. Artystyczny styl narzÄ™dzia astyle (258)
    • 4.4.3. Analiza kodu za pomocÄ… narzÄ™dzia cflow (259)
    • 4.4.4. Analiza kodu za pomocÄ… narzÄ™dzia ctags (262)
    • 4.4.5. PrzeglÄ…danie kodu za pomocÄ… narzÄ™dzia cscope (262)
    • 4.4.6. PrzeglÄ…danie i dokumentowanie kodu za pomocÄ… narzÄ™dzia Doxygen (264)
    • 4.4.7. Analiza kodu źródÅ‚owego z wykorzystaniem kompilatora (266)
  • 4.5. Podsumowanie (268)
    • 4.5.1. NarzÄ™dzia użyte w tym rozdziale (269)
    • 4.5.2. Bibliografia (270)
    • 4.5.3. MateriaÅ‚y dostÄ™pne w internecie (270)

Rozdział 5. Co każdy programista powinien wiedzieć o jądrze systemu (273)

  • 5.1. Wprowadzenie (273)
  • 5.2. Tryb użytkownika a tryb jÄ…dra (274)
    • 5.2.1. WywoÅ‚ania systemowe (276)
    • 5.2.2. Przenoszenie danych pomiÄ™dzy przestrzeniÄ… użytkownika a przestrzeniÄ… jÄ…dra (278)
  • 5.3. Mechanizm szeregowania procesów (279)
    • 5.3.1. ReguÅ‚y szeregowania procesów (279)
    • 5.3.2. Blokowanie, wywÅ‚aszczanie i rezygnacje (282)
    • 5.3.3. Priorytety szeregowania i kwestia sprawiedliwoÅ›ci (283)
    • 5.3.4. Priorytety i wartość nice (287)
    • 5.3.5. Priorytety czasu rzeczywistego (289)
    • 5.3.6. Tworzenie procesów czasu rzeczywistego (292)
    • 5.3.7. Stany procesów (294)
    • 5.3.8. Jak jest mierzony czas pracy procesów (301)
  • 5.4. Zrozumieć urzÄ…dzenia i sterowniki urzÄ…dzeÅ„ (313)
    • 5.4.1. Rodzaje sterowników urzÄ…dzeÅ„ (314)
    • 5.4.2. SÅ‚owo o moduÅ‚ach jÄ…dra (316)
    • 5.4.3. WÄ™zÅ‚y urzÄ…dzeÅ„ (317)
    • 5.4.4. UrzÄ…dzenia i operacje wejÅ›cia-wyjÅ›cia (330)
  • 5.5. Mechanizm szeregowania operacji wejÅ›cia-wyjÅ›cia (340)
    • 5.5.1. Winda Linusa (znana też jako noop) (342)
    • 5.5.2. Mechanizm szeregowania operacji wejÅ›cia-wyjÅ›cia z terminem granicznym (343)
    • 5.5.3. PrzewidujÄ…cy mechanizm szeregowania operacji wejÅ›cia-wyjÅ›cia (344)
    • 5.5.4. Mechanizm szeregowania operacji wejÅ›cia-wyjÅ›cia z peÅ‚nym kolejkowaniem (344)
    • 5.5.5. Wybór mechanizmu szeregowania operacji wejÅ›cia-wyjÅ›cia (344)
  • 5.6. ZarzÄ…dzanie pamiÄ™ciÄ… w przestrzeni użytkownika (345)
    • 5.6.1. Omówienie pamiÄ™ci wirtualnej (346)
    • 5.6.2. Wyczerpanie dostÄ™pnej pamiÄ™ci (363)
  • 5.7. Podsumowanie (378)
    • 5.7.1. NarzÄ™dzia użyte w tym rozdziale (378)
    • 5.7.2. Interfejsy API omówione w tym rozdziale (379)
    • 5.7.3. MateriaÅ‚y dostÄ™pne w internecie (379)
    • 5.7.4. Bibliografia (379)

Rozdział 6. Zrozumieć procesy (381)

  • 6.1. Wprowadzenie (381)
  • 6.2. SkÄ…d siÄ™ biorÄ… procesy (381)
    • 6.2.1. WywoÅ‚ania systemowe fork i vfork (382)
    • 6.2.2. Kopiowanie przy zapisie (383)
    • 6.2.3. WywoÅ‚anie systemowe clone (384)
  • 6.3. Funkcje z rodziny exec (384)
    • 6.3.1. Skrypty wykonywalne (385)
    • 6.3.2. Wykonywalne pliki obiektów (387)
    • 6.3.3. Rozmaite binaria (389)
  • 6.4. Synchronizacja procesów za pomocÄ… funkcji wait (392)
  • 6.5. Wymagania pamiÄ™ciowe procesu (394)
    • 6.5.1. Deskryptory plików (397)
    • 6.5.2. Stos (404)
    • 6.5.3. Pamięć rezydentna i pamięć zablokowana (405)
  • 6.6. Ustawianie ograniczeÅ„ dla procesów (406)
  • 6.7. Procesy i system plików procfs (410)
  • 6.8. NarzÄ™dzia do zarzÄ…dzania procesami (413)
    • 6.8.1. WyÅ›wietlanie informacji o procesach za pomocÄ… polecenia ps (413)
    • 6.8.2. Zaawansowane informacje o procesach, uzyskiwane z wykorzystaniem formatów (416)
    • 6.8.3. Odnajdywanie procesów wedÅ‚ug nazw za pomocÄ… poleceÅ„ ps i pgrep (419)
    • 6.8.4. Åšledzenie wymagaÅ„ pamiÄ™ciowych procesu za pomocÄ… polecenia pmap (420)
    • 6.8.5. WysyÅ‚anie sygnaÅ‚ów do procesów identyfikowanych przez nazwy (422)
  • 6.9. Podsumowanie (423)
    • 6.9.1. WywoÅ‚ania systemowe i interfejsy API użyte w tym rozdziale (423)
    • 6.9.2. NarzÄ™dzia użyte w tym rozdziale (424)
    • 6.9.3. MateriaÅ‚y dostÄ™pne w internecie (424)

Rozdział 7. Komunikacja pomiędzy procesami (425)

  • 7.1. Wprowadzenie (425)
  • 7.2. Technika IPC z wykorzystaniem zwykÅ‚ych plików (426)
    • 7.2.1. Blokowanie plików (431)
    • 7.2.2. Wady implementacji techniki IPC z wykorzystaniem plików (432)
  • 7.3. Pamięć wspóÅ‚dzielona (432)
    • 7.3.1. ZarzÄ…dzanie pamiÄ™ciÄ… wspóÅ‚dzielonÄ… za poÅ›rednictwem interfejsu POSIX API (433)
    • 7.3.2. ZarzÄ…dzanie pamiÄ™ciÄ… wspóÅ‚dzielonÄ… za poÅ›rednictwem interfejsu System V API (437)
  • 7.4. SygnaÅ‚y (440)
    • 7.4.1. WysyÅ‚anie sygnaÅ‚ów do procesu (441)
    • 7.4.2. ObsÅ‚uga sygnaÅ‚ów (442)
    • 7.4.3. Maska sygnaÅ‚ów i obsÅ‚uga sygnaÅ‚ów (444)
    • 7.4.4. SygnaÅ‚y czasu rzeczywistego (447)
    • 7.4.5. Zaawansowane operacje na sygnaÅ‚ach z wykorzystaniem funkcji sigqueue i sigaction (450)
  • 7.5. Potoki (453)
  • 7.6. Gniazda (454)
    • 7.6.1. Tworzenie gniazd (455)
    • 7.6.2. PrzykÅ‚ad gniazda lokalnego, utworzonego za pomocÄ… funkcji socketpair (458)
    • 7.6.3. PrzykÅ‚ad aplikacji klient-serwer, zbudowanej z wykorzystaniem gniazd lokalnych (459)
    • 7.6.4. PrzykÅ‚ad aplikacji klient-serwer, zbudowanej z wykorzystaniem gniazd sieciowych (465)
  • 7.7. Kolejki komunikatów (466)
    • 7.7.1. Kolejka komunikatów standardu System V (467)
    • 7.7.2. Kolejka komunikatów standardu POSIX (471)
    • 7.7.3. Różnice dzielÄ…ce kolejki komunikatów standardów POSIX i System V (476)
  • 7.8. Semafory (477)
    • 7.8.1. Interfejs API semaforów standardu POSIX (483)
    • 7.8.2. Interfejs API semaforów standardu System V (486)
  • 7.9. Podsumowanie (488)
    • 7.9.1. WywoÅ‚ania systemowe i interfejsy API użyte w tym rozdziale (489)
    • 7.9.2. Bibliografia (490)
    • 7.9.3. MateriaÅ‚y dostÄ™pne w internecie (490)

RozdziaÅ‚ 8. Diagnozowanie mechanizmów komunikacji miÄ™dzyprocesowej za pomocÄ… poleceÅ„ powÅ‚oki (491)

  • 8.1. Wprowadzenie (491)
  • 8.2. NarzÄ™dzia operujÄ…ce na otwartych plikach (491)
    • 8.2.1. Polecenie lsof (492)
    • 8.2.2. Polecenie fuser (493)
    • 8.2.3. Polecenie ls (494)
    • 8.2.4. Polecenie file (495)
    • 8.2.5. Polecenie stat (495)
  • 8.3. Zrzucanie danych z pliku (496)
    • 8.3.1. Polecenie strings (499)
    • 8.3.2. Polecenie xxd (500)
    • 8.3.3. Polecenie hexdump (501)
    • 8.3.4. Polecenie od (502)
  • 8.4. NarzÄ™dzia powÅ‚oki do obsÅ‚ugi komunikacji miÄ™dzyprocesowej standardu System V (504)
    • 8.4.1. Pamięć wspóÅ‚dzielona standardu System V (504)
    • 8.4.2. Kolejki komunikatów standardu System V (507)
    • 8.4.3. Semafory standardu System V (509)
  • 8.5. NarzÄ™dzia powÅ‚oki do obsÅ‚ugi komunikacji miÄ™dzyprocesowej standardu POSIX (510)
    • 8.5.1. Pamięć wspóÅ‚dzielona standardu POSIX (510)
    • 8.5.2. Kolejki komunikatów standardu POSIX (511)
    • 8.5.3. Semafory standardu POSIX (512)
  • 8.6. NarzÄ™dzia pomocne w pracy z sygnaÅ‚ami (514)
  • 8.7. NarzÄ™dzia pomocne w pracy z potokami i gniazdami (516)
    • 8.7.1. Potoki i struktury FIFO (517)
    • 8.7.2. Gniazda (518)
  • 8.8. Identyfikacja plików i obiektów IPC na podstawie i-wÄ™zÅ‚ów (521)
  • 8.9. Podsumowanie (523)
    • 8.9.1. NarzÄ™dzia wykorzystane w tym rozdziale (523)
    • 8.9.2. MateriaÅ‚y dostÄ™pne w internecie (523)

Rozdział 9. Doskonalenie wydajności (525)

  • 9.1. Wprowadzenie (525)
  • 9.2. Wydajność systemu (525)
    • 9.2.1. Problemy zwiÄ…zane z pamiÄ™ciÄ… (526)
    • 9.2.2. Wykorzystanie procesora i rywalizacja o dostÄ™p do magistrali (537)
    • 9.2.3. UrzÄ…dzenia i przerwania (541)
    • 9.2.4. NarzÄ™dzia umożliwiajÄ…ce identyfikacjÄ™ problemów w zakresie wydajnoÅ›ci systemu (550)
  • 9.3. Wydajność aplikacji (560)
    • 9.3.1. Pierwsze kroki - polecenie time (560)
    • 9.3.2. Zrozumieć architekturÄ™ procesora z wykorzystaniem narzÄ™dzia x86info (561)
    • 9.3.3. Stosowanie pakietu Valgrind do analizy efektywnoÅ›ci rozkazów (565)
    • 9.3.4. Wprowadzenie do narzÄ™dzia ltrace (570)
    • 9.3.5. Stosowanie narzÄ™dzia strace do monitorowania wydajnoÅ›ci programu (572)
    • 9.3.6. Tradycyjne programy do optymalizacji oprogramowania - gcov oraz gprof (574)
    • 9.3.7. Podstawowe informacje o narzÄ™dziu OProfile (583)
  • 9.4. Wydajność w Å›rodowisku wieloprocesorowym (590)
    • 9.4.1. Rodzaje systemów SMP (591)
    • 9.4.2. Programowanie dla komputerów SMP (596)
  • 9.5. Podsumowanie (600)
    • 9.5.1. Omówione w tym rozdziale problemy zwiÄ…zane z wydajnoÅ›ciÄ… (601)
    • 9.5.2. Terminy wprowadzone w tym rozdziale (601)
    • 9.5.3. NarzÄ™dzia wykorzystane w tym rozdziale (601)
    • 9.5.4. MateriaÅ‚y dostÄ™pne w internecie (602)
    • 9.5.5. Bibliografia (602)

Rozdział 10. Diagnozowanie oprogramowania (603)

  • 10.1. Wprowadzenie (603)
  • 10.2. Najprostsze narzÄ™dzie diagnostyczne - funkcja printf (604)
    • 10.2.1. Problemy zwiÄ…zane ze stosowaniem funkcji printf w roli narzÄ™dzia diagnostycznego (604)
    • 10.2.2. Efektywne korzystanie z funkcji printf (610)
    • 10.2.3. Kilka sÅ‚ów podsumowania metod diagnozowania oprogramowania z wykorzystaniem funkcji printf (620)
  • 10.3. Jak opanować podstawy debugera GNU - gdb (622)
    • 10.3.1. Wykonywanie kodu pod kontrolÄ… debugera gdb (623)
    • 10.3.2. Zatrzymywanie i wznawianie wykonywania kodu (624)
    • 10.3.3. Analiza i modyfikowanie danych (636)
    • 10.3.4. DoÅ‚Ä…czanie debugera gdb do pracujÄ…cego procesu (649)
    • 10.3.5. Diagnozowanie plików rdzenia (649)
    • 10.3.6. Diagnozowanie programów wielowÄ…tkowych za pomocÄ… debugera gdb (653)
    • 10.3.7. Diagnozowanie zoptymalizowanego kodu (655)
  • 10.4. Diagnozowanie obiektów dzielonych (659)
    • 10.4.1. Kiedy i dlaczego stosujemy obiekty dzielone (659)
    • 10.4.2. Tworzenie obiektów dzielonych (660)
    • 10.4.3. Lokalizowanie obiektów dzielonych (661)
    • 10.4.4. Nadpisywanie domyÅ›lnych lokalizacji obiektów dzielonych (662)
    • 10.4.5. Problemy zwiÄ…zane z bezpieczeÅ„stwem obiektów dzielonych (663)
    • 10.4.6. NarzÄ™dzia wykorzystywane w pracy z obiektami dzielonymi (663)
  • 10.5. Poszukiwanie problemów zwiÄ…zanych z pamiÄ™ciÄ… (667)
    • 10.5.1. Podwójne zwalnianie pamiÄ™ci (668)
    • 10.5.2. Wycieki pamiÄ™ci (668)
    • 10.5.3. PrzepeÅ‚nienia buforów (669)
    • 10.5.4. NarzÄ™dzia biblioteki standardowej glibc (671)
    • 10.5.5. Diagnozowanie problemów zwiÄ…zanych z pamiÄ™ciÄ… za pomocÄ… pakietu Valgrind (675)
    • 10.5.6. Identyfikacja przepeÅ‚nieÅ„ za pomocÄ… debugera Electric Fence (682)
  • 10.6. Techniki niekonwencjonalne (685)
    • 10.6.1. Tworzenie wÅ‚asnych czarnych skrzynek (685)
    • 10.6.2. Åšledzenie wsteczne w czasie wykonywania (688)
    • 10.6.3. Wymuszanie zrzutów rdzenia (691)
    • 10.6.4. Stosowanie sygnaÅ‚ów (692)
    • 10.6.5. Diagnozowanie oprogramowania z wykorzystaniem systemu pakietu procfs (693)
  • 10.7. Podsumowanie (696)
    • 10.7.1. NarzÄ™dzia wykorzystane w tym rozdziale (697)
    • 10.7.2. MateriaÅ‚y dostÄ™pne w internecie (697)
    • 10.7.3. Bibliografia (697)

Skorowidz (699)

Dodaj do koszyka Linux. Niezbędnik programisty

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.