2021年3月7日日曜日

KiCadのpcbnewのプラグインのエラーログを見る


背景

KiCadのpcbnewではアクションプラグインという括りで、pythonで記述するプラグインを作れます。

作り方は下記のページで解説されています。
Python Plugin Development for Pcbnew

pcbnewの機能一覧はこちらです。
pcbnew Namespace Reference

通常のKiCadの起動方法で動作確認すると、不具合が発生した場合にログが出ないので原因の特定がに時間がかかります。
調べたり試したりしたことで起動時と実行時のエラーの確認方法が分かったので、備忘録を兼ねて記事として共有します。

使ったもの

KiCad 5.1.9

起動時のエラーを見る

KiCadのフォーラムで有用な情報が共有されていました。
Getting action plugin error messages

スクリプトコンソールで下記のコマンドを実行すると直前に発生したエラーを確認できます。
コードをコピペする際は、余分な要素を除去するために Ctrl + Shift + v での貼り付けをお勧めします。
import pcbnew
print(pcbnew.GetUnLoadableWizards())
print(pcbnew.GetWizardsBackTrace())

下記の例ではgetAndRepeatBoard()という関数定義の末尾に「:」を付けていないためシンタックスエラーが発生してプラグインの読み込みに失敗しています。


実行時のエラーを見る

Linuxはターミナルで起動しておけば確認可能

コマンドでpcbnewを起動しておくと、実行時のエラーがターミナルに表示されます。
printで出力する情報もこの方法で確認できます。
この方法は、KiCadのメインメニューを開かずpcbnewを直接起動できるため、開発時に再起動を繰り返す際にメインメニューを開かない分早く起動出来るのでお勧めです。

コマンド例です。
[some ..]の部分を自身のプロジェクトに合わせて読み替えてください。
cd [some kicad project path]
pcbnew [some kicad project].kicad_pcb

エラーが発生すると、pcbnewを実行しているターミナルに内容が表示されます。


MacとWindowsでpcbnewをコマンドで起動する方法(しかし、エラーは出てこない)

WindowsとMacでコマンドからpcbnewを起動する方法を共有します。
Linuxのようにエラーは確認できませんが、プラグインの読み直しにpcbnewの再起動が必要なので、これを知っておくと起動を素早くできて効率が上がると思います。

Mac
console.appでもエラーは確認できませんでした。
cd [some kicad project path]
open -a pcbnew ATmega328PB-usb-bread-board.kicad_pcb

Windows power shell
power shellはexeファイルの前に & を付けて実行します。
cd [some kicad project path]
& 'C:\Program Files\KiCad\bin\pcbnew.exe' [some kicad project].kicad_pcb

Windows git
git for windowsは即時にエラーログは出てきませんが、pcbnewを終了すると貯まっていたログをまとめて出力する挙動をします。
cd [some kicad project path]
/c/Program\ Files/KiCad/bin/pcbnew.exe [some kicad project].kicad_pcb

全てのOSで例外をキャッチしてwxで表示すればエラーを確認可能

wxを使う場合は下記のように例外をキャッチしてトレースバックを表示をすると、ポップアップでエラーの内容を確認できます。
import traceback
import wx

def SomeFunction():
try:
// your process
except Exception as e:
wx.MessageBox('Error: ' + str(e) + '\n\n' + traceback.format_exc(), pluginName, wx.OK|wx.ICON_INFORMATION)


メモ: KiCadのpcbnewのアクションプラグインの配置場所

プラグインを作った時の記事でも言及していますが、この記事を書く際に何度も確認したので、ここでも共有します。
Windows
~/AppData/Roaming/kicad/scripting/plugins

Mac
~/Library/Preferences/kicad/scripting/plugins

Linux
~/.kicad/scripting/plugins

まとめ

起動時のエラーはスクリプトコンソールのバックトレース関数を呼び出すことで、実行時のエラーはpcbnewをコマンドで起動しておくかcatchしてtracebackの表示により、それぞれ確認できました。
pcbnewのアクションプラグインを作る際にエラーを見れると開発能率が上がると思います。

MacとWindowsでエラーログをターミナルで確認する方法をご存知でしたら、コメントなどで共有していただけると嬉しいです。

0 件のコメント :