Cara Memasang GDB pada CentOS 6

GDB adalah penyahpepijat untuk C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada, dan Modula-2.

CentOS berdasarkan RHEL (Red Hat Enterprise Linux). Salah satu tujuan utama RHEL adalah menjadi sistem operasi pelayan yang stabil, yang bermaksud bahawa versi pakej perisian yang lebih baru tidak selalu tersedia.

Pada masa penulisan, CentOS 6 menawarkan GDB v7.2. Pasukan GDB bagaimanapun, baru-baru ini mengeluarkan kod untuk v7.91.

Secara rasmi disarankan untuk menjalankan distro Linux yang berbeza untuk menggunakan versi GDB yang lebih baru. Ini tidak selalu sesuai. Nasib baik, mungkin untuk memasang versi GDB yang lebih baru di CentOS 6. Oleh kerana GDB adalah penyahpepijat dan bukannya komponen teras sistem, anda cukup selamat menggunakan versi yang lebih baru.

Artikel ini menerangkan cara memasang versi GDB yang disokong dan tidak disokong di CentOS 6.

Saya juga akan menerangkan cara menyediakan GDB untuk memberi anda maklumat penyahpepijatan yang lebih mudah dibaca semasa menggunakan Perpustakaan Piawai C ++ (seperti tali) dan Pustaka Templat Piawai (seperti vektor). Ciri ini dipanggil pencetakan cantik.

Log masuk ke VPS anda, dan sediakan akaun pengguna anda

  1. Log masuk ke VPS anda. Ini dapat dilakukan dengan mengklik "View Console" di panel kawalan Vultr, atau dengan klien SSH.

    (a) Log masuk sebagai root.

    (b) Buat akaun pengguna anda sendiri. Tetapkan kata laluan.

    adduser <username>
    passwd <username>
    

    (c) Beri pengguna sudo akses.

    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) Log keluar sebagai root, kemudian log masuk semula dengan akaun pengguna anda. Jauh lebih selamat untuk tidak pernah log masuk sebagai root. Menggunakan sudo adalah amalan yang lebih baik.

Sekiranya anda ingin memasang versi GDB yang disokong secara rasmi (lama)

  1. Pasang GDB.

    sudo yum install gdb
    
  2. Periksa versi yang dipasang, dan lihat lokasinya.

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

Sekiranya anda ingin memasang versi GDB yang lebih baru dari sumber

  1. Pasang penyusun C, seperti GCC. Penyusun C ++ tidak diperlukan untuk membina GDB dari sumber, tetapi diperlukan untuk menunjukkan ciri percetakan GDB yang cantik. Anda boleh membina versi GCC yang lebih baru dari sumber dengan melakukan langkah-langkah dalam artikel Cara Memasang GCC di CentOS 6 . Atau, anda boleh memasang versi GCC CentOS 6 yang disokong secara rasmi dengan menjalankan:

    sudo yum install gcc gcc-c++
    
  2. Pasang pakej tambahan yang diperlukan.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Tentukan versi GDB yang ingin anda bina dari sumber. Lawati laman GTP FTP untuk melihat versi yang tersedia untuk dimuat turun.

  4. Dapatkan sumber versi GDB yang anda mahukan. Selebihnya artikel ini ditulis untuk v7.9.1 dan akan memuat turun sumbernya ~/sourceInstallations/gdb-7.9.1/- anda harus mengganti nombor versi yang betul untuk versi yang lebih baru.

    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. Bina GDB. Sekiranya ini selesai dengan betul, baris terakhir yang akan anda lihat akan menyatakan "kejayaan". Adalah normal untuk melihat beberapa mesej yang kelihatan ralat bergulir dengan cepat. Ini selamat untuk diabaikan.

    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. Pasang percetakan C ++ yang cantik.

    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. Periksa versi yang dipasang, dan lokasinya.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Jalankan GDB secara pilihan dan lihat percetakan yang cantik.

    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. Dapatkan semula ruang cakera keras secara pilihan. ~/sourceInstallationsDirektori anda akan menggunakan sekitar 386MB. Mungkin bijak untuk menyimpan direktori, kerana ada pilihan konfigurasi pilihan yang mungkin perlu anda gunakan pada suatu ketika nanti, dan lebih cepat untuk menyelesaikan banyak perkara. Proses membina juga membuat log yang kemudian anda boleh periksa dan berfungsi sekiranya ada yang tidak kena. Tetapi, setelah berjalan sudo make installlebih awal, GDB yang anda pasang tidak bergantung pada apa-apa dalam direktori ini, dan ruangnya dapat menjadi premium, jadi anda dapat melakukan langkah ini dan menuntut kembali 386MB atau lebih. PENTING: jangan hapus ~/gdb_printers/direktori! Kandungan direktori ini dimuat setiap kali anda menjalankan GDB. Mereka TIDAK disusun ke dalam GDB sendiri.

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


Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut