yanagida_iwaya
2023年12月25日 15時57分
お世話になっております。
現在、以下条件でpdbを用いたpythonデバッグ環境構築を目指しております。
仮想開発環境:ATDE9(Oracle VM Virtual Box 7.0にて起動)
コンテナOS:Alpine 3.18.4
言語:python3.11.6
IDE:VScode(ABOS-DE使用)
目標デバッグ手順:以下手順でpdbによるブレイクポイント、変数値チェックを以下の手順で実施できること
1. ABOS-webによりコンテナなどインストール
2. コンテナ上で動作対象となるpythonスクリプトの任意の行に、ブレイクポイントとなる「pdb.set_trace()」を追加
3. ATDE9 VScode ABOS上から「App run on Armadillo」実施
4. VScode上 TERMINALに表示されるコンソール上にてブレイクポイントで停止した旨の出力を確認
5. pdb入力モードに切り替わり次第、コマンド入力でデバッグ作業実施
上記目標デバッグ手順4までは動作することを確認しておりますが、5にてpdb入力モードに切り替わった後、コマンドをVScodeのTERMINAL上に入力しても受け付けされません。
なぜ受付しないのか、問題の切り分けをどこから行えばよいかわからず、何か解決法などご存じでしたらご教授いただければ幸いです。
以上、よろしくお願いいたします。
コメント
at_shiita.ishigaki
石垣です。
> 上記目標デバッグ手順4までは動作することを確認しておりますが、5にてpdb入力モードに切り替わった後、コマンドをVScodeのTERMINAL上に入力しても受け付けされません。
ABOSDEのプロジェクトではコンテナからの出力は見えるようにしていましたが、
パソコンからの入力を Armadillo に送ることを想定しておりませんでした。
pdb で入力を行うためには、以下2つのファイルを編集して頂く必要があります。
1. config/app.conf
2. scripts/util.sh
順番に変更点を挙げさせて頂きます。
1. config/app.conf
add_args -t を add_args -it に変更
2. scripts/util.sh
隠しファイルのため、vscode 上で編集するにはターミナルで以下のコマンドを入力してください。
[ATDE path/to/project]$ code scripts/util.sh
以下の行を変更
ssh -F config/ssh_config Armadillo "podman_start $container \ && podman logs -f $container"
を
ssh -F config/ssh_config Armadillo "podman_start $container \ && podman attach $container"
に変更
以上2つのファイルを書き換えることによって、pdb が動作することを確認できました。
来月のアップデートにこちらの対応を入れたいと考えております。
以上、よろしくお願い致します。
yanagida_iwaya
yanagida_iwaya
at_shiita.ishigaki
yanagida_iwaya
at_shiita.ishigaki
石垣です。
ABOSDE で作成した Python プロジェクトで VSCode の Python 拡張機能のデバッグ機能を使うことができましたので共有させて頂きたいと思います。
VSCode の Python 拡張機能のデバッガーは debugpy を使用しています。
https://github.com/microsoft/debugpy
Armadillo 側で debugpy の client を待機する方法も可能かと思いますが、今回は VSCode の SSH 機能を使って、debugpy を起動しました。
以下に手順を記載します。
ローカル VSCode の変更手順
1. Python プロジェクトを VSCode で開く(以降ここのパスを /path/to/project と記載します)
2. /path/to/project/container/packages.txt に以下を記載
openssh-server
3. /path/to/project/config/ssh_config に以下を記載
Port 2222
4. /path/to/project/config/app.conf に以下を記載
add_volumes /root/.ssh:/root/.ssh add_volumes /run/sshd:/run/sshd add_ports 2222:22
5. /path/to/project/config/app.conf の set_command を以下に変更
set_command sh -c 'python3 /vol_app/src/main.py & echo "$!" > /run/app.pid; exec /usr/sbin/sshd -D'
6. $HOME/.ssh/config に以下を記載 (vscode で config ファイルを開く場合はターミナルに次のコマンドを入力 `code $HOME/.ssh/config`)
Host Armadillo Hostname 172.16.1.75 User root Port 2222 IdentityFile ${HOME}/.ssh/id_ed25519_vscode UserKnownHostsFile config/ssh_known_hosts StrictHostKeyChecking accept-new
7. VSCode 左ペインの 「ABOSDE Explorer」から「開発版 SWU を生成」を実行
8. 生成された development.swu を Armadillo にインストールしてください。
以上の手順により Armadillo のコンテナとして起動している Python プロジェクトコンテナは
ssh サーバーを起動し、ABOS と同じ ssh の鍵を使用することができます。
また、ABOS の 2222 ポートをコンテナの 22 ポートに接続しています。
9. VSCode 左ペインの「拡張機能」から「Remote - SSH」 をインストール
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.re…
10. VSCode 左ペインの「リモート エクスプローラー」に「Armadillo」が表示されているので、「新しいウィンドウで接続…」を選択
これにより、ABOS 上で動作している Python プロジェクトコンテナに VSCode の SSH で接続が完了しました。
初回以降は、手順10. の「リモート エクスプローラー」の「新しいウィンドウで接続…」のみで、Python プロジェクトコンテナに接続することができます。
次に、手順10. で開かれた リモート VSCode で必要な手順になります。
VSCode が ローカル VSCode と リモート VSCode の2つ開かれていると思いますので、リモートの方を選択してください。
1. VSCode 左ペインの「拡張機能」から「Python」 をインストール
https://marketplace.visualstudio.com/items?itemName=ms-python.python
2. VSCode 左ペインの「フォルダーを開く」を選択し「/vol_app」を選択
3. VSCode エクスプローラーで src/main.py を開く
4. F5 キーを押すことでデバッグを開始
5. 初回デバッグ時のみ、「デバッグ構成を選択する」と表示されるので「Python ファイル」を選択
以上の設定により、VSCode の Python 拡張機能のデバッグ機能を使って Armadillo 上で動作しているプロジェクトをデバッグすることができので、
VSCode 上でブレイクポイントの設定や変数等を見ることができるようになります。
一点気をつけていただきたいのですが、
リモート VSCode 上でファイルを編集した場合、コンテナの再起動時やArmadilloの再起動時に、編集した内容が戻ってしまいます。
ですので、Armadillo の電源を着る前に リモート VSCode の編集箇所をローカル VSCode に適応することを行ってください。
何か不明な点等ありましたら、ご連絡ください。
以上、よろしくお願い致します。
yanagida_iwaya
2023年12月25日 16時08分
追記です。
以下、VScode TERMINAL(App run on Armadillo)からpdbにコマンド入力を思考した際のログになります。(プロジェクト名、キー値などは伏せ字、または削除しています)
その他必要な情報などありましたら、都度ご指摘いただければ幸いです。
以上、よろしくお願いいたします。