0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux上のVSCodeでsudoが必要なプログラム(C言語)をデバッグする

Posted at

背景

RaspberryPiでpigpioライブラリを使うC言語で書いたプログラムを実行するにはsudoが必要となる。
VSCodeで通常の手順でデバッグするとsudoができないのでデバッグできない。
printfデバッグに限定してもよいが、通常デバッグできると便利。

手順の概略

手順の概略は以下の通り。

  1. VSCodeで通デバッグするための通常の設定をする
  2. sudo でVSCodeを起動する(そのための設定を事前に行う。)
  3. デバッグする

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権限が必要なプログラムも問題無くデバッグできる。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?