背景
RaspberryPiでpigpioライブラリを使うC言語で書いたプログラムを実行するにはsudoが必要となる。
VSCodeで通常の手順でデバッグするとsudoができないのでデバッグできない。
printfデバッグに限定してもよいが、通常デバッグできると便利。
手順の概略
手順の概略は以下の通り。
- VSCodeで通デバッグするための通常の設定をする
- sudo でVSCodeを起動する(そのための設定を事前に行う。)
- デバッグする
sudo でVSCodeを起動すると、そこから起動されるデバッグ対象のプロセスもroot権限を行使できる。
しかし、VSCodeをsudoするのはあんまりよくないようだが、まあ仕方が無い。
ディレクトリ構成や実行可能ファイルは以下の通りと想定する
- ソースコードとかMakefileがあるディレクトリ: ~/develop/hello
- 実行可能ファイル: hello
なお、実行可能ファイルはデバッグ情報などを付与しているものとする(-g -O0オプション指定済み)
実際の作業手順
1.通常のデバッグするための設定を行う
別記事で書いたので、こちらを参照(https://qiita.com/hase-k0x01/items/a01226de51b2747586fe)
Makefileとかソースコード一式をフォルダにまとめておくこと
2. sudoでVSCode起動するための設定をおこなう
この記事で紹介する方法では、VSCodeをsudoで起動する。
sudoでVSCodeを起動すると、ユーザ設定データを保存するためのディレクトリを指定しなければならない。
そのディレクトリをあらかじめ作成しておく(.debug という名前にしておく)
$ cd ~/develop/hello
$ sudo mkdir .debug
3.VSCodeをsudoで起動する
VSCodeをsudoで起動する。
そのためには、オプション --no-sandbox と --user-data-dir を指定する必要がある。
--user-data-dir は、VSCodeの設定データ等を保存するためのディレクトリのようだ。
わかりやすいように、Makefileやソースコード一式があるのと同じディレクトリに配置しておくとよさそう。ファイルがたくさんできるので、ディレクトリ(.debug)を作ってそれを指定しておくとよさそう。
$ sudo code --no-sandbox --user-data-dir ./.debug/ ./
4.VSCodeの設定を行う
この方法でVSCodeを起動すると、VSCodeが全く設定されていない状態になる。
今まで使っていた環境設定とは別の環境設定で起動する。その設定は.debugに保存されているとおもう。
今までの設定が破棄されたわけではなく、ただ単に切り替わっているだけだと思われる。
なので、エクステンションなどのインストールや設定が必要。
最低限の設定だけでもしておくとよい
5. デバッグを開始する
VSCodeの設定ができたら、通常の手順でデバッグを開始する。
VSCodeがroot権限で実行されているので、起動されるプロセスもroot権限になるから、root権限が必要なプログラムも問題無くデバッグできる。
以上