NSExec()のログを取る(デバッグ用)

Luaの小技シリーズ。
NSExec()が実行される度に、何が実行されたかを記録するようになるスクリプト

  • これを実行した後のNSexecから有効。
  • スクリプトのどこにおいても構わない。他に影響は与えない(ように作ったつもりです)。
  • ログを保存するファイル名は、"nsexec.log"になっているので、必要ならスクリプトを変更。
  • ログの一番最後に注目する。改行がなければ、最後の命令を実行中にエラーが出たことを示す。改行があれば、ここの外でエラーが出て死んだことがわかる。
  • デバッグ目的なので、製品版ではこのスクリプトは削除するかコメントアウトして殺しておくのを忘れないように。

スクリプト

do
	local fh = io.open("nsexec.log", "w")
	fh:setvbuf("full")
	local original = _G.NSExec
	_G.NSExec = function(str)
		fh:write(str); fh:flush()
		original(str)
		fh:write("\n"); fh:flush()
	end
end

解説

特にないけれども、ここで使った処理の横取りテクニックは、Luaでは基本技らしい。