Cara Memasang GDB pada CentOS 6

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

CentOS didasarkan pada RHEL (Red Hat Enterprise Linux). Salah satu tujuan utama RHEL adalah menjadi sistem operasi server yang stabil, yang berarti bahwa versi paket perangkat lunak yang lebih baru tidak selalu tersedia.

Pada saat penulisan, CentOS 6 menawarkan GDB v7.2. Namun tim GDB, baru-baru ini merilis kode untuk v7.91.

Secara resmi disarankan untuk menjalankan distro Linux yang berbeda untuk menggunakan versi GDB yang lebih baru. Ini tidak selalu ideal. Untungnya, dimungkinkan untuk menginstal versi GDB yang lebih baru pada CentOS 6. Karena GDB adalah debugger daripada komponen inti sistem, Anda cukup aman untuk menggunakan versi yang lebih baru.

Artikel ini menjelaskan cara menginstal versi GDB yang didukung dan tidak didukung pada CentOS 6.

Saya juga akan menjelaskan cara mengatur GDB untuk memberi Anda informasi debug yang lebih mudah dibaca saat menggunakan C ++ Standard Library (seperti string) dan Standard Template Library (seperti vektor). Fitur ini disebut pencetakan cantik.

Masuk ke VPS Anda, dan atur akun pengguna Anda

  1. Masuk ke VPS Anda. Ini dapat dilakukan dengan mengklik "Lihat Konsol" di panel kontrol Vultr, atau dengan klien SSH.

    (a) Masuk sebagai root.

    (B) Buat akun pengguna Anda sendiri. Atur kata sandi.

    adduser <username>
    passwd <username>
    

    (c) Berikan akses sudo pengguna.

    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) Keluar sebagai root, lalu masuk kembali dengan akun pengguna Anda. Jauh lebih aman untuk tidak pernah benar-benar masuk sebagai root. Menggunakan sudo adalah praktik yang lebih baik.

Jika Anda ingin menginstal versi GDB (yang lebih lama) yang didukung secara resmi

  1. Instal GDB.

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

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

Jika Anda ingin menginstal versi GDB yang lebih baru dari sumber

  1. Instal kompiler C, seperti GCC. Kompiler C ++ tidak diperlukan untuk membangun GDB dari sumber, tetapi diperlukan untuk menunjukkan fitur pencetakan GDB yang cantik. Anda dapat membangun versi GCC yang lebih baru dari sumber dengan melakukan langkah-langkah di artikel Cara Memasang GCC di CentOS 6 . Atau, Anda dapat menginstal versi GCC CentOS 6 yang didukung secara resmi dengan menjalankan:

    sudo yum install gcc gcc-c++
    
  2. Instal paket tambahan yang dibutuhkan.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Tentukan versi GDB yang ingin Anda buat dari sumber. Kunjungi situs GDB FTP untuk melihat versi yang tersedia untuk diunduh.

  4. Dapatkan sumber versi GDB yang Anda inginkan. Sisa dari artikel ini ditulis untuk v7.9.1 dan akan mengunduh sumber ke ~/sourceInstallations/gdb-7.9.1/- Anda harus mengganti nomor versi yang tepat 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. Bangun GDB. Jika ini selesai dengan benar, baris terakhir yang akan Anda lihat akan mengatakan "sukses". Adalah normal untuk melihat beberapa pesan yang tampak salah bergulir dengan cepat. Ini aman 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. Instal C ++ pencetakan 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 diinstal, dan lokasinya.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Secara opsional jalankan GDB dan lihat pencetakan 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. Secara opsional, reklamasi ruang hard drive. ~/sourceInstallationsDirektori Anda akan memakan waktu sekitar 386MB. Mungkin bijaksana untuk menyimpan direktori, karena ada opsi konfigurasi opsional yang mungkin perlu Anda gunakan di beberapa titik di masa depan, dan akan lebih cepat jika banyak yang sudah dilakukan. Selain itu, proses pembuatan membuat log yang nantinya dapat Anda periksa dan berfungsi jika ada masalah. Tetapi, setelah berjalan sudo make installlebih awal, GDB yang Anda instal tidak tergantung pada apa pun di direktori ini, dan ruang dapat menjadi premium, sehingga Anda dapat melakukan langkah ini dan mendapatkan kembali 386MB atau lebih. PENTING: jangan hapus ~/gdb_printers/direktori! Isi direktori ini dimuat setiap kali Anda menjalankan GDB. Mereka TIDAK dikompilasi ke dalam GDB itu 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

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.