Како инсталирати ГДБ на ЦентОС 6

ГДБ је програм за отклањање грешака за Ц, Ц++, Објецтиве-Ц, Пасцал, Фортран, Го, Д, ОпенЦЛ Ц, Ада и Модула-2.

ЦентОС је заснован на РХЕЛ (Ред Хат Ентерприсе Линук). Један од главних циљева РХЕЛ-а је да буде стабилан серверски оперативни систем, што значи да новије верзије софтверских пакета нису увек доступне.

У време писања, ЦентОС 6 нуди ГДБ в7.2. Међутим, ГДБ тим је недавно објавио код за в7.91.

Званично се предлаже да се покрене другачија Линук дистрибуција како би се користила новија верзија ГДБ-а. Ово није увек идеално. На срећу, могуће је инсталирати новије верзије ГДБ-а на ЦентОС 6. Пошто је ГДБ програм за отклањање грешака, а не језгра система, прилично је безбедно да користите новију верзију.

Овај чланак објашњава како да инсталирате подржане и неподржане верзије ГДБ-а на ЦентОС 6.

Такође ћу објаснити како да подесите ГДБ да вам пружи лакше читљиве информације о отклањању грешака када користите Ц++ стандардну библиотеку (попут стринга) и стандардну библиотеку шаблона (попут вектора). Ова карактеристика се зове прилично штампање.

Пријавите се на свој ВПС и подесите свој кориснички налог

  1. Пријавите се на свој ВПС. Ово се може урадити кликом на „Виев Цонсоле“ на Вултр контролној табли или помоћу ССХ клијента.

    (а) Пријавите се као роот.

    (б) Креирајте сопствени кориснички налог. Поставите лозинку.

    adduser <username>
    passwd <username>
    

    (ц) Одобрите кориснику судо приступ.

    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.
    

    (д) Одјавите се као роот, а затим се поново пријавите са својим корисничким налогом. Много је сигурније да се никада не пријавите као роот. Коришћење судоа је боља пракса.

Ако желите да инсталирате званично подржану (старију) верзију ГДБ-а

  1. Инсталирајте ГДБ.

    sudo yum install gdb
    
  2. Проверите инсталирану верзију и погледајте њену локацију.

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

Ако желите да инсталирате новију верзију ГДБ-а из извора

  1. Инсталирајте Ц компајлер, као што је ГЦЦ. Ц++ компајлер није потребан за прављење ГДБ-а из извора, али је потребан да би се демонстрирала ГДБ-ова лепа карактеристика штампања. Можете да направите новију верзију ГЦЦ-а из извора тако што ћете извршити кораке у чланку Како инсталирати ГЦЦ на ЦентОС 6 . Или можете да инсталирате званично подржану верзију ГЦЦ-а за ЦентОС 6 тако што ћете покренути:

    sudo yum install gcc gcc-c++
    
  2. Инсталирајте додатно потребне пакете.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Одлучите коју верзију ГДБ-а желите да направите из извора. Посетите ГДБ ФТП локацију да видите верзије које су доступне за преузимање.

  4. Набавите извор верзије ГДБ-а коју желите. Остатак овог чланка је написан за в7.9.1 и преузима изворе у ~/sourceInstallations/gdb-7.9.1/- мораћете да замените одговарајући број верзије за новије верзије.

    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. Изградите ГДБ. Ако се ово заврши исправно, последњи ред који ћете видети ће рећи „успех“. Нормално је да се неке поруке које изгледају као грешке брзо померају. Ово је сигурно игнорисати.

    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. Инсталирајте Ц++ прилично штампање.

    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. Проверите инсталирану верзију и њену локацију.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Опционо покрените ГДБ и видите лепо штампање.

    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. Опционо повратите простор на чврстом диску. Ваш ~/sourceInstallationsименик ће заузимати око 386 МБ. Вероватно је паметно задржати директоријуме, јер постоје опционе опције конфигурације које ћете можда морати да користите у неком тренутку у будућности, а било би брже да сте већ много тога урадили. Такође, процес изградње прави евиденције које касније можете да проверите и да радите са њима ако нешто крене наопако. Али, након покретања sudo make installраније, ваш инсталирани ГДБ не зависи ни од чега у овом директоријуму, а простор може бити премиум, тако да можете да урадите овај корак и повратите 386 МБ или тако нешто. ВАЖНО: немојте брисати ~/gdb_printers/именик! Садржај овог директоријума се учитава сваки пут када покренете ГДБ. НИСУ састављени у сам ГДБ.

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

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више