Raspberry PiのQtアプリをUbuntuでデバッグする

Debug Qt apps on Raspberry Pi from Ubuntu desktop
前回ではRaspberry Pi用のQtライブラリのビルドをUbuntuで行いました。今回は、それをもとにアプリのコンパイルとリモートデバッグを行います。

始めにLinux x64版Qt CreatorをUbuntuへインストールします。
wget //download.qt.io/official_releases/qt/5.11/5.11.2/qt-opensource-linux-x64-5.11.2.run chmod +x qt-opensource-linux-x64-5.11.2.run sudo ./qt-opensource-linux-x64-5.11.2.run
Ubuntuのアプリ一覧から「Qt Creator」を選んで起動します。メニューの「Tools」より「Devices→Devices」を選び、デバイスの追加より、Raspberry Pi(IPアドレスとユーザー名、パスワード)を入力します。
「Kits→Compilers」の「Add」より「C→"/opt/qt5pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc"」「C++→"/opt/qt5pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++"」をそれぞれ追加します。ABIの項目が「arm-linux-generic-elf-32bit」になっているかも確認してください。
「Kits→Debbugers」の「Add」より"/usr/bin/gdb-multiarch"ファイルを登録します。
「Kits→Qt Versions」の「Add」より"/opt/qt5pi/sysroot/usr/local/qt5pi/bin/qmake"ファイルを登録します。 「Kits→Kits」の「Add」より新規追加し、これまでに登録したデバッガ、コンパイラ、Qtバージョンを指定していきます。
Raspbianにリモートデバッグツールを導入します。
sudo apt-get install gdbserver
起動するアプリはフルスクリーンモードで動作し、通常はHDMIモニターでしか描画されません。液晶モニターではなくVNCでモニタリングしているのであれば、VNCサーバーのオプションで「Enable experimental direct capture mode」にチェックを入れます。
「sudo nano ~/.bashrc」などでbashファイルを開き、Qtにおけるディスプレイの物理サイズをミリ単位で登録しておきます。例えば、Amazonで3000円ほどで売っているOSOYOOのHDMI 3.5インチLCDディスプレイを使用するのであれば、「export QT_QPA_EGLFS_PHYSICAL_WIDTH=86」「export QT_QPA_EGLFS_PHYSICAL_HEIGHT=56」になります。
Qtプロジェクトを作成したら、proファイルを開いて、ビルドしたLinuxアプリのインストール先を「/home/pi/$${TARGET}/bin」のように、ホストからアクセス可能なディレクトリに置き換えます。
アプリが正常に動作しない原因はたいてい外部ライブラリーが見つからなかったことによるものなので、この場合は、Qt関連のライブラリーだけではなく「libxcb-xinerama0-dev」といった、サードパーティーライブラリーが正しく登録されているか、不要だと思ったアプリをアンインストールしてしまったことで関連したライブラリーが失われていないか、などを検証してみましょう。
2018/11/09