CentOS 6にGDBをインストールする方法

GDBは、C、C ++、Objective-C、Pascal、Fortran、Go、D、OpenCL C、Ada、およびModula-2のデバッガーです。

CentOSはRHEL(Red Hat Enterprise Linux)に基づいています。RHELの主な目標の1つは、安定したサーバーオペレーティングシステムであることです。つまり、新しいバージョンのソフトウェアパッケージが常に利用できるとは限りません。

執筆時点では、CentOS 6はGDB v7.2を提供しています。ただし、GDBチームは最近v7.91のコードをリリースしました。

新しいバージョンのGDBを使用するには、別のLinuxディストリビューションを実行することが公式に推奨されています。これは常に理想的とは限りません。さいわい、CentOS 6に新しいバージョンのGDBをインストールすることは可能です。GDBはシステムコアコンポーネントではなくデバッガなので、新しいバージョンを使用しても安全です。

この記事では、CentOS 6にGDBのサポートされているバージョンとサポートされていないバージョンの両方をインストールする方法について説明します。

また、C ++標準ライブラリ(文字列など)および標準テンプレートライブラリ(ベクトルなど)を使用するときに、GDBを設定して読みやすいデバッグ情報を提供する方法についても説明します。この機能はプリティプリンティングと呼ばれます。

VPSにログインし、ユーザーアカウントを設定します

  1. VPSにログインします。これは、Vultrコントロールパネルの[View Console]をクリックするか、SSHクライアントを使用して実行できます。

    (a)rootとしてログインします。

    (b)独自のユーザーアカウントを作成します。パスワードを設定します。

    adduser <username>
    passwd <username>
    

    (c)ユーザーにsudoアクセスを許可します。

    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)rootとしてログアウトし、自分のユーザーアカウントで再度ログインします。実際にはrootとしてログインしない方がはるかに安全です。sudoを使用することをお勧めします。

公式にサポートされている(古い)バージョンのGDBをインストールする場合

  1. GDBをインストールします。

    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
    

ソースから新しいバージョンのGDBをインストールする場合

  1. GCCなどのCコンパイラをインストールします。ソースからGDBを構築するためにC ++コンパイラーは必要ありませんが、GDBのかなりの印刷機能を示すために必要です。CentOS 6にGCCをインストールする方法の記事の手順を実行して、ソースから最新バージョンのGCCをビルドできます。または、次のコマンドを実行して、GCCの正式にサポートされているバージョンのCentOS 6をインストールできます。

    sudo yum install gcc gcc-c++
    
  2. 追加で必要なパッケージをインストールします。

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. ソースからビルドするGDBのバージョンを決定します。訪問GDB FTPサイトをダウンロードすることができますバージョンを参照してください。

  4. 必要なバージョンのGDBのソースを取得します。この記事の残りの部分はv7.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. GDBをビルドします。これが正しく完了すると、最後に表示される行に「成功」​​と表示されます。いくつかのエラーのように見えるメッセージがすばやくスクロールするのは正常です。これらは無視しても安全です。

    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. 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. インストールされているバージョンとその場所を確認します。

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. 必要に応じてGDBを実行し、きれいな印刷を確認します。

    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以前に実行した後、インストールされたGDBはこのディレクトリの何にも依存せず、スペースが非常に大きくなる可能性があるため、この手順を実行して386MB程度を再利用できます。重要:~/gdb_printers/ディレクトリを削除しないでください!このディレクトリの内容は、GDBを実行するたびに読み込まれます。それらは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

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。