本日のお題は『FreeCADでデバッグする方法』です。
まだ始めたばかりで少々気が早いですが、デバッグの方法を先に学んでおきましょう。
これをやっておけば、プログラム規模が大きくなったときに役に立ちますからね。
- 1. 環境
- 2. 前提
- 3. Visual Studio Codeを使ったデバッグ
- 4. 補足
- 5. まとめ
- 6. 最後に
- 更なる情報をお探しの方は!
1. 環境
- FreeCAD 0.20
※Pythonのソースコードを書くことになりますが、Pythonのモジュールを別途インストールする必要はありません。FreeCAD内に元々モジュールが含まれています。
2. 前提
デバッグの方法については本家『freecadweb.org』に情報が載っています。
その中で、デバッグの方法として3つの方法が紹介されていますが、今回はなんとか上手くいった『Visual Studio Codeを使った方法』を紹介したいと思います。
3. Visual Studio Codeを使ったデバッグ
本家『freecadweb.org』に記載されている情報だけでは、初見の私にはキツかったので、インストール~デバッグするまでの手順を説明していきます。
少々長いですが我慢してくださいね。
3.1. 準備するもの(FreeCAD以外)
- Visual Studio Code (VSCodeUserSetup-x64-1.75.1.exe)
(最新版をダウンロードしてくれば問題ないです。)
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
3.2. Visual Studio Codeのインストール
ダウンロードしたら、早速インストールしましょう。特に気にするところはなく、次へを押していけば良いです。
私の場合、デフォルトのインストールフォルダがAppDataの下に入るのが嬉しくなかったので、別のフォルダを切りました。
3.3. 日本語化 (必要であれば)
インストールできたら、今度は日本語化します。
日本語化にあたっては、下記サイト様の記事を参考にさせて頂きました。
3.4. Python Extensionをインストール
Visual Studio Codeはインストールしたばかりの状態だと、pythonのソースコードをpythonと認識できません。
そのため、拡張機能をインストールします。
- 画面左最下部の『管理』のアイコンをクリックします。
- クリックすると、ポップアップメニュー内に『拡張機能』という項目があるので選択します。
- クリックすると、拡張機能の検索画面が出てくるので検索バーに『Python』と入力します。
- 下のリストに、Pythonという項目が出てきますので、その項目横にある『インストール』ボタンを押します。
- インストール中は『インストールしています』と表示され、完了すると、ボタンが消えます。
拡張機能のインストールはこれで終わりです。
3.5. デバッグの構成情報作成
まずは構成情報というデバッグに必要な設定を定義します。
https://www.freecadweb.org/wiki/Debugging
- メニューの[実行 - 構成を追加]を実行。
- 下記のコードを入力し保存。
※ 下記のコードをそのままコピーすると、スペース部分に警告を表す赤い波線がつく場合があるので、その際はタブもしくは半角スペースで置き換えて(入力しなおして)ください。
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost" } ] }
3.6. Visual Studio Code用のPythonモジュールをインストール
PythonとVisual Studio Codeでデバッグのやり取りをする場合、Python側にptvsdというモジュールを追加インストールする必要があります。
注意しなければならないのは、インストールする先はFreeCAD内に内包されているPythonであるという点です。
FreeCADとは関係なく、個別にインストールされたPythonに対して、インストールするわけではありません。
下記、インストールの手順です。
3.6.1. コマンドプロンプトを起動し、FreeCADのbinフォルダへ移動
コマンドプロンプトを起動し、FreeCADをインストールしたフォルダへ移動します。
3.6.2. ptvsdをインストール
pythonからpipというパッケージインストール用のモジュールを呼び出して、インストールします。
ちなみに私が実行した際、pipのバージョンによる警告が発生しました。
You should consider upgrading via the
そのため、メッセージにある通りアップグレードを実行。
すると今度はこんなメッセージが。
WARNING: The scripts pip.exe, pip3.8.exe and pip3.exe are installed in
Consider adding this directory to PATH or, if you prefer to suppress
Successfully installed pip-23.0.1
WARNING: You are using pip version 21.1.1; however, version 23.0.1 is
You should consider upgrading via the
まぁPATHが通ってない的な記載がされていますね。
とりあえず「Successfully installed pip-23.0.1」と記載されているので、pipのインストールはおそらく成功したのではないかと思います。
というわけで再度『python -m pip install ptvsd』コマンドを実行しました。
すると今度はこんなメッセージが。
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: ptvsd in
上手くいっているように見えなくもない。
以前のFreeCAD 0.18のインストール時に記載したおまじない『--user』を入れて再度実行してみたところ以下のようなメッセージ。
--userを入れない時と大体同じようです。
とりあえず要求は満たされているとのことで、良しとして次に行きます。
3.7. FreeCADからサンプルコードを実行
FreeCADを起動し、Visual Studio Codeがデバッグするためのコードを実行します。
まずは最初に下記のサンプルコードを記載したSample.pyを作成します。
※ 作成する際はエディタを使って下記のコードを手入力してください。下記のコードをコピーしてエディタにそのまま貼り付けると文字コードの問題(?)で、後で処理を実行する際に『Syntax Error』とか『invalid character in identifier』といったわかりにくいエラーが頻発します。
# -*- coding: utf-8 -*- import ptvsd print("Waiting for debugger attach") # 5678 is the default attach port in the VS Code debug configurations ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True) ptvsd.wait_for_attach() import FreeCAD v1 = FreeCAD.Vector(5,0,0) v1.normalize() print (str(v1))
Sample.pyを作成したら、メニューの[マクロ - マクロ...]でSample.pyを選択し、実行を押下します。
実行後、FreeCADがフリーズ状態(他の操作ができない状態)になれば成功です。
フリーズ状態になっているのはデバッグが実行されるのをFreeCADが待っているわけで、壊れたわけではありません。落ち着きましょう。
3.8. Visual Studio Codeでブレークポイントを設置
FreeCADのサンプルプログラムが待ち状態になったので、今度はVisual Studio Codeからデバッグを開始します。まずはブレークポイントを設置します。
どこに設置しても問題はないですが、とりあえず11行目に配置してみましょう。
11の数字の左側をクリックし、赤いマークが点灯すれば準備OKです。
3.9. デバッグの開始
Visual Studio Code画面の一番左側に『虫と再生マークが合体したような』アイコンがあるので、クリックします。
クリックすると上に『実行とデバッグ』と書いてあるラベルが現れます。その横にあるプルダウンを開き、『Python:Attach』という項目を選択します。
(デフォルトですでに選択されているかもしれません)
選択できたら、メニュー[実行 - デバッグの開始]を実行します。
3.10. デバッグ開始の確認
デバッグを開始すると、先ほどブレークポイントを設置したソースコードが表示され、11行目が黄色くハイライトされます。
ハイライトされている箇所で、処理が止まっている状態です。
3.11. パラメータの確認
デバッグが開始されたので、試しに変数の中身を見てみましょう。
画面左側に『変数』ビューが表示されているので、その中から『v1』の項目を探してください。
見つかったら、そこに入っている値を確認します。今回は以下のように入力されているはずです。
3.12. デバッグの終了
パラメータの確認ができたら、メニュー[デバッグ - デバッグの停止]を実行して、デバッグを終了しましょう。
フリーズしていたはずのFreeCADがこれで操作できるようになったはずです。
これでデバッグの一覧の操作は終了です。お疲れ様でした。
4. 補足
4.1. デバッグ用のコードはリリース時に消すこと
サンプルコードで入力した下記のソースコードは、完成したプログラムには不要なコードとなります。
(デバッグ時にのみ必要なコードのため、リリースする際は不要)
import ptvsd print("Waiting for debugger attach") # 5678 is the default attach port in the VS Code debug configurations ptvsd.enable_attach(address=('localhost', 5678), redirect_output=True) ptvsd.wait_for_attach()
そのため、出来上がったらコメントアウトするなり、削除するなりしておいてください。
5. まとめ
- Visual Studio Codeを使うことでデバッグができる
- デバッグ用ソースコードはリリース時には消す
6. 最後に
デバッガは大きなプログラムを開発することになった際、必ず必要になるツールです。
今のうちに使い方に慣れておきましょう。
更なる情報をお探しの方は!
下記のリンクから、FreeCADプログラミングのトップページに飛びます。
よろしければご参照くださいませ。