リモート開発メインのソフトウェア開発企業のエンジニアブログです

Vagrant環境でRailsのリモートデバッグ(ブレークポイント使用可能)

基本的には以下の記事の流れに沿ってインストールすれば良いのですが、ある程度インフラに精通していないと完了までに結構はまることになると思いますので、重要なポイントを記録しておきたいと思います。

Visual Studio Codeは最新のものをインストールで良いと思います。

https://qiita.com/syamagami666/items/11f02be59411eec194f6

スペックなど

上記の記事通りにインストールを行ったとしても、OSの種類やバージョンによってはエラーが出る可能性があります。今回は以下の条件で発生したエラーに対応します。

  • VirtualBox 6.0.4
  • Vagrant 2.2.4
  • centos 6.10
  • Rails 4.2

エラーの内容

上記の記事の「Connect to Host…」を実行した際に以下のエラーが発生したため、一つずつ解決します。

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found 
/usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found 
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found 
/lib64/libc.so.6: version `GLIBC_2.17' not found 
/lib64/libc.so.6: version `GLIBC_2.16' not found 
/lib64/libc.so.6: version `GLIBC_2.14' not found 

とりあえず、gccのバージョンが古かったので最新にすることにしました。以下のコマンドでインストールします。

# まずはvagrantに入ります。
vagrant ssh

gcc -v

cd /home/vagrant/tmp

curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/sha512.sum
sha512sum --check sha512.sum

sudo tar xzfv gcc-8.3.0.tar.gz -C /usr/local/src
cd /usr/local/src/gcc-8.3.0/
sudo ./contrib/download_prerequisites
sudo mkdir build
cd build
sudo ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
sudo make
sudo make install

gcc -v

上記の設定を反映させるために共有ライブラリの参照設定をします。

cd /etc/ld.so.conf.d

# パス "/usr/local/lib64" を以下のファイルに書き込みます。 
sudo vi usr_local_lib64.conf

sudo mv /usr/local/lib64/libstdc++.so.6.0.25-gdb.py  /usr/local/lib64/back_libstdc++.so.6.0.25-gdb.py

sudo ldconfig

以下のエラーが消えないのでさらにライブラリをインストールします。

/lib64/libc.so.6: version `GLIBC_2.17' not found 
/lib64/libc.so.6: version `GLIBC_2.16' not found 
/lib64/libc.so.6: version `GLIBC_2.14' not found 

バージョン2.17を入れればそれ以下も解決しました。

wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm

sudo rpm -Uvh glibc-2.17-55.el6.x86_64.rpm glibc-common-2.17-55.el6.x86_64.rpm glibc-devel-2.17-55.el6.x86_64.rpm glibc-headers-2.17-55.el6.x86_64.rpm

後は初めに紹介した記事通りに進めればリモートデバッグできるはずです。今回はRailsで試しましたが、Laravelなどでも同様に構築できると思いますので次回チャレンジしてみようと思います。

Tips

リモートデバッグした後にVisual Studio Codeのデバッグ停止ボタンを押してから、PCをスリープさせないとプロセスが残って次のリモートデバッグ時にエラーが出ます。その場合は以下のプロセスを探してkillしてみてください。

ps aux
vagrant 12345 XXX 1:23 /opt/rbenv/versions/2.2.2/bin/rdebug-ide

kill 12345

← 前の投稿

Azure App Service + Docker で Rails アプリを動かす

次の投稿 →

JAVA_TOOL_OPTIONS環境変数でAWS Lambda関数のシステムプロパティを設定する

コメントを残す