Paepoi » Gedit Tips » Gedit でスクリプトを debug
Gedit でスクリプトを debug
Python スクリプトを書くのに私はすべて Gedit で行っている。
スニペットがあるのでコード補完はいらない、けど F5 でデバッグ開始くらいはやりたい。
VC++ のデフォルトが F5 だったので...
ということで外部ツールを設定してみました、gedit って本当に高機能。
スニペットがあるのでコード補完はいらない、けど F5 でデバッグ開始くらいはやりたい。
VC++ のデフォルトが F5 だったので...
ということで外部ツールを設定してみました、gedit って本当に高機能。
2018.07.22 : JavaScript 関連の追記
2017.03.16 : シバン実行の追加、画像の最新版化
2014.01.04 : Python 関連記述を Python3 に変更
2012.03.04 : 画像を GNOME3 に変更とコードをシンプル化
設定
アプリケーションメニューで設定ダイアログを開き「プラグイン」タブを選択。
「 外部ツール 」を有効にして設定ダイアログを閉じます。
アプリケーションメニューに [Manage External Tools...] が追加されているはず。
ツールを登録したい拡張子のファイル(*.py)を開いた状態でそのメニューを選択。
ダイアログの「+」ボタンを押しテキトーな名前を指定、そしてコマンドに
他の言語も同様に追加していきます、これが正攻法手段。
ただこの手段だと JavaScript のように実行エンジンが複数ある場合に困る。
ということで筆者はシバンによって実行エンジンを振り分けするようにしています。
を書き込み残りは下記のように指定する、Shortcut Key は F5 ね。
$GEDIT_CURRENT_DOCUMENT_PATH
$GEDIT_CURRENT_DOCUMENT_TYPE
についてはヘルプをお読みください。
![img/gedit_debugging.png](img/gedit_debugging-300x198.png)
コレを閉じてデバッグ用設定はおしまい。
「 外部ツール 」を有効にして設定ダイアログを閉じます。
アプリケーションメニューに [Manage External Tools...] が追加されているはず。
ツールを登録したい拡張子のファイル(*.py)を開いた状態でそのメニューを選択。
ダイアログの「+」ボタンを押しテキトーな名前を指定、そしてコマンドに
#!/bin/sh python3 $GEDIT_CURRENT_DOCUMENT_PATHを Python, Python3 の所に登録。
他の言語も同様に追加していきます、これが正攻法手段。
ただこの手段だと JavaScript のように実行エンジンが複数ある場合に困る。
ということで筆者はシバンによって実行エンジンを振り分けするようにしています。
#!/bin/sh # シバンがあるならソレで起動、無いなら ContentType 判別 h=`head -n1 $GEDIT_CURRENT_DOCUMENT_PATH` if [[ $h = \#\!* ]]; then app=${h#*\!} echo $app $GEDIT_CURRENT_DOCUMENT_PATH $app $GEDIT_CURRENT_DOCUMENT_PATH else echo @ContentType $GEDIT_CURRENT_DOCUMENT_TYPE if [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *python ]]; then python3 $GEDIT_CURRENT_DOCUMENT_PATH elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *javascript ]]; then gjs $GEDIT_CURRENT_DOCUMENT_PATH elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *shellscript ]]; then sh $GEDIT_CURRENT_DOCUMENT_PATH elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *vala ]]; then vala $GEDIT_CURRENT_DOCUMENT_PATH elif [[ $GEDIT_CURRENT_DOCUMENT_TYPE = *csrc ]]; then src=`head $GEDIT_CURRENT_DOCUMENT_PATH` case $src in *gtk.h*) echo "Gtk Build" gcc $GEDIT_CURRENT_DOCUMENT_PATH `pkg-config --cflags --libs gtk+-3.0` ;; *glib.h*) echo "GLib Build" gcc $GEDIT_CURRENT_DOCUMENT_PATH `pkg-config --cflags --libs glib-2.0` ;; *) echo "Gcc Build" gcc $GEDIT_CURRENT_DOCUMENT_PATH ;; esac else echo Non Support File fi fi
を書き込み残りは下記のように指定する、Shortcut Key は F5 ね。
$GEDIT_CURRENT_DOCUMENT_PATH
$GEDIT_CURRENT_DOCUMENT_TYPE
についてはヘルプをお読みください。
![img/gedit_debugging.png](img/gedit_debugging-300x198.png)
コレを閉じてデバッグ用設定はおしまい。
動作
Ctrl+F9 でボトムペインを表示切り替えができます、Wayland で動作しませんが...
F5 を叩くと勝手に表示されるので閉じたままでかまいません。
さて外部ツールを使ってみます。
普段は Gjs なのにたまに Node.js を試している場合。
実行したいコードをアクティブにした状態で先ほど指定した F5 を押す。
![img2/nodejs.png](img2/nodejs-300x265.png)
のようにボトムペインが標準出力先になり端末上で行うのと同様に表示されます。
例外になるとシェルの出力に例外情報が出力されます。
無理に端末と行ったり来たりしなくても gedit のみでこれが可能である。
ただし入力はできませんのであしからず。
次に GUI アプリではどうなるか。
私が公開している Comipoli で試してみる、実行ファイルである comipoli を開いて F5
見事ウインドが表示され待機状態になりました。
この状態でコードを編集しても反映されませんので注意。
ウインドウを閉じて終了させると done が出力されます。
他に私がよく利用するのは PyGObject でメソッドのチェック。
PyGObject でどう書けばいいかは dir() で辿って調べていく、私はそうやった。
Python の print はとりあえず何でも文字列で出力できるので可能な技である。
F5 を叩くと勝手に表示されるので閉じたままでかまいません。
さて外部ツールを使ってみます。
普段は Gjs なのにたまに Node.js を試している場合。
#!/usr/bin/env node console.log("Node.js で Debug!"); print("node.js なのに gjs のつもりで print にしてもーた"); console.log("コレは表示されない");
実行したいコードをアクティブにした状態で先ほど指定した F5 を押す。
![img2/nodejs.png](img2/nodejs-300x265.png)
のようにボトムペインが標準出力先になり端末上で行うのと同様に表示されます。
例外になるとシェルの出力に例外情報が出力されます。
無理に端末と行ったり来たりしなくても gedit のみでこれが可能である。
ただし入力はできませんのであしからず。
次に GUI アプリではどうなるか。
私が公開している Comipoli で試してみる、実行ファイルである comipoli を開いて F5
![img/gedit_debugging3.png](img/gedit_debugging3-300x297.png)
見事ウインドが表示され待機状態になりました。
この状態でコードを編集しても反映されませんので注意。
ウインドウを閉じて終了させると done が出力されます。
他に私がよく利用するのは PyGObject でメソッドのチェック。
#!/usr/bin/env python3 from gi.repository import Gtk print(dir(Gtk.Window))PyGObject から Gtk はドキュメントが無いので GTK+ 3 Reference Manual が頼り。
PyGObject でどう書けばいいかは dir() で辿って調べていく、私はそうやった。
Python の print はとりあえず何でも文字列で出力できるので可能な技である。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2025.