Jak zainstalować GDB na CentOS 6

GDB jest debuggerem dla C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada i Modula-2.

CentOS oparty jest na RHEL (Red Hat Enterprise Linux). Jednym z głównych celów RHEL jest stabilny system operacyjny serwera, co oznacza, że ​​nowsze wersje pakietów oprogramowania nie zawsze są dostępne.

W chwili pisania tego tekstu CentOS 6 oferuje GDB v7.2. Zespół GDB opublikował niedawno kod wersji 7.91.

Oficjalnie zaleca się uruchomienie innej dystrybucji Linuksa w celu użycia nowszej wersji GDB. To nie zawsze jest idealne. Na szczęście możliwe jest zainstalowanie nowszych wersji GDB na CentOS 6. Ponieważ GDB jest debuggerem, a nie głównym składnikiem systemu, używanie nowej wersji jest dość bezpieczne.

W tym artykule wyjaśniono, jak zainstalować zarówno obsługiwane, jak i nieobsługiwane wersje GDB na CentOS 6.

Wyjaśnię również, jak skonfigurować GDB, aby zapewnić łatwiejsze do odczytania informacje debugowania podczas korzystania ze standardowej biblioteki C ++ (jak ciąg) i standardowej biblioteki szablonów (jak wektor). Ta funkcja nazywa się ładnym drukowaniem.

Zaloguj się do VPS i skonfiguruj swoje konto użytkownika

  1. Zaloguj się do swojego VPS. Można to zrobić, klikając „Wyświetl konsolę” w panelu sterowania Vultr lub za pomocą klienta SSH.

    (a) Zaloguj się jako root.

    (b) Utwórz własne konto użytkownika. Ustaw hasło.

    adduser <username>
    passwd <username>
    

    (c) Przyznaj użytkownikowi sudo dostęp.

    visudo
        After the line "root   ALL=(ALL)   ALL"
        Add the line "<username>   ALL=(ALL)   ALL"
        --- If you aren't familiar with vi, go to the line "root   ALL=(ALL)   ALL".
        ---   Hit "o" to create a new line after that line and enter insert mode.
        ---   Type "<username>   ALL=(ALL)   ALL".
        ---   Hit ESC.
        ---   Type "ZZ" to save.
    

    (d) Wyloguj się jako root, a następnie zaloguj się ponownie za pomocą konta użytkownika. O wiele bezpieczniej jest nigdy nie logować się jako root. Korzystanie z sudo jest lepszą praktyką.

Jeśli chcesz zainstalować oficjalnie obsługiwaną (starszą) wersję GDB

  1. Zainstaluj GDB.

    sudo yum install gdb
    
  2. Sprawdź zainstalowaną wersję i sprawdź jej lokalizację.

    gdb --version
        May say: GNU gdb (GDB) Red Hat Enterprise Linux (7.2-75.el6)
    which gdb
        /usr/bin/gdb
    

Jeśli chcesz zainstalować nowszą wersję GDB ze źródła

  1. Zainstaluj kompilator C, taki jak GCC. Kompilator C ++ nie jest potrzebny do zbudowania GDB ze źródła, ale jest potrzebny do zademonstrowania ładnej funkcji drukowania GDB. Możesz zbudować nowszą wersję GCC ze źródła, wykonując czynności opisane w artykule Jak zainstalować GCC na CentOS 6 . Lub możesz zainstalować oficjalnie obsługiwaną wersję GCC CentOS 6, uruchamiając:

    sudo yum install gcc gcc-c++
    
  2. Zainstaluj dodatkowo wymagane pakiety.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Wybierz wersję GDB, którą chcesz zbudować ze źródła. Odwiedź witrynę FTP GDB, aby zobaczyć wersje dostępne do pobrania.

  4. Uzyskaj źródło wersji GDB, którą chcesz. Pozostała część tego artykułu jest napisana dla wersji 7.9.1 i pobierze źródła do ~/sourceInstallations/gdb-7.9.1/- będziesz musiał zastąpić właściwy numer wersji nowszymi wersjami.

    mkdir ~/sourceInstallations
    cd ~/sourceInstallations
    wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz .
    tar -zxvf gdb-7.9.1.tar.gz
    
  5. Zbuduj GDB. Jeśli to się powiedzie, ostatni wiersz, który zobaczysz, powie „sukces”. Normalne jest szybkie przewijanie komunikatów o błędach. Można je zignorować.

    mkdir gdb-7.9.1.build
    cd gdb-7.9.1.build
    ../gdb-7.9.1/configure --with-python=yes && make && sudo make install && echo success
        --- If your VPS has multiple cores, you can speed up the build by changing the middle part
        ---  of this line from "&& make &&" to "&& make -j <number of cores> &&".
        --- You can see the number of cores your VPS has by running "nproc"
        --- The parameter "--with-python=yes" is necessary for the pretty printing feature
    
  6. Zainstaluj ładne drukowanie w C ++.

    cd ~/
    svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python gdb_printers
    Create a file ~/.gdbinit of:
        python
        import sys
        sys.path.insert(0, '/home/<yourUserName>/gdb_printers/')
        from libstdcxx.v6.printers import register_libstdcxx_printers
        end
    --- One way to create this file is to run "vi ~/.gdbinit", hitting "i" to enter insert mode,
    ---  typing the above file, hitting ESC, and hitting "ZZ" to save.
    
  7. Sprawdź zainstalowaną wersję i jej lokalizację.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Opcjonalnie uruchom GDB i zobacz ładne drukowanie.

    mkdir ~/gdbExample
    cd ~/gdbExample
    Create a file gdbExample.cpp of:
        #include <string>
        #include <vector>
        using namespace std;
    
        int main() {
           string foo = "bar";
           vector<string> vec;
           vec.push_back("foo");
           vec.push_back("bar");
           vec.push_back("foobar");
        }
    --- One way to create this file is to run "vi gdbExample.cpp", hitting "i" to enter insert mode,
    ---  typing the above file, hitting ESC, and hitting "ZZ" to save.
    g++ -ggdb gdbExample.cpp -o gdbExample
    Start GDB traditionally, by running "gdb ./gdbExample".  Or, start GDB by using its terminal user interface (basically a text mode GUI), by running "gdb --tui ./gdbExample".
    Enter "break main" to set a breakpoint at the beginning of function main() -- and it will say:
        Breakpoint 1 at 0x<someAddress>: file gdbExample.cpp, line 6.
    Enter "run" to start the program, which will immediately hit the breakpoint you just set -- and it will say:
        Starting program: /home/<yourUserName>/gdbExample/gdbExample
    
        Breakpoint 1, main () at gdbExample.cpp:6
        6          string foo = "bar";
    Enter "next" and hit enter four times, and gdb will move up to just before executing:
        10         vec.push_back("foobar"); 
    Enter "print foo" and gdb will show:
        $1 = "bar"
    Enter "print vec" and gdb will show:
        $2 = std::vector of length 2, capacity 2 = {"foo", "bar"}
        --- Remember, line 10 hasn't executed yet to add "foobar" to the vector
    Enter "quit" and "y" to quit anyway.
    
  9. Opcjonalnie odzyskaj miejsce na dysku twardym. Twój ~/sourceInstallationskatalog zajmie około 386 MB. Prawdopodobnie rozsądnie jest zachować katalogi, ponieważ istnieją opcjonalne opcje konfiguracji, które mogą być potrzebne w przyszłości, i byłoby szybciej, gdyby wiele już zrobiono. Ponadto proces kompilacji tworzy dzienniki, które można później sprawdzić i pracować, jeśli coś pójdzie nie tak. Ale po sudo make installwcześniejszym uruchomieniu zainstalowany GDB nie zależy od niczego w tym katalogu, a miejsce może być na wagę złota, więc możesz zrobić ten krok i odzyskać około 386 MB. WAŻNE: nie usuwaj ~/gdb_printers/katalogu! Zawartość tego katalogu jest ładowana przy każdym uruchomieniu GDB. NIE zostały one skompilowane do samego GDB.

    cd ~/
    rm -rf sourceInstallations
    --- Again, if you can spare the space, you may someday be happy to have left it there.
    


Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.