呼び出し元(Caller)の場所(行数)を特定したい
Pythonでprintデバッグをしていますが、すぐにどこに仕掛けたprintなのか忘れてしまう。
そこでDbgOutという関数を作ってみました。
def DbgPrint(obj, msg):
print "(dbg)%s >"msg + str(obj)
折角なので、沢山これを付けたときにどの行から呼び出されたDbgPrintなのか分かると、いい感じそうです。javascriptならこんなのがあった気がするんだけどと思ったらやはりPythonにもありました。sys._getfram関数がソレです。
これでとれるframeオブジェクトのf_lineoに行番号が入っています。
つまり
def DbgPrint(obj,msg):
print "(dbg L%d)%s >"%(msg, sys._getframe(1).f_lineo) + str(obj)
となります。
なかなか便利ですよ。
そこでDbgOutという関数を作ってみました。
def DbgPrint(obj, msg):
print "(dbg)%s >"msg + str(obj)
折角なので、沢山これを付けたときにどの行から呼び出されたDbgPrintなのか分かると、いい感じそうです。javascriptならこんなのがあった気がするんだけどと思ったらやはりPythonにもありました。sys._getfram関数がソレです。
これでとれるframeオブジェクトのf_lineoに行番号が入っています。
つまり
def DbgPrint(obj,msg):
print "(dbg L%d)%s >"%(msg, sys._getframe(1).f_lineo) + str(obj)
となります。
なかなか便利ですよ。
Comments