2018年10月17日水曜日

パイソンのデバッグ テクニック2


今回は、プログラムのどこを流れたかを確認する関数を作成しました。
プログラムの流れをトレースするのに便利な関数です


print文により、ソースファイル名、関数名、行番号が表示されます。
以下の変数に格納されます。

fileNm  ソースファイル名
funcNm  関数名
lineNo    行番号


表示フォーマットは、自分の好きなようにカスタマイズしてくださいね!
現在は、こんな感じです。

test.py main:15
test.py func:12




🔸トレースに便利な関数

def dbg():

  frame = inspect.currentframe().f_back

  fileNm = os.path.basename(frame.f_code.co_filename)
  funcNm = frame.f_code.co_name
  lineNo = frame.f_lineno

  print( fileNm, "%s:%s" %(funcNm, lineNo) )





🔸ソース全体  ( test.py )
こちらをコピペすれば動作が確認できると思います。


import inspect
import os

def dbg():
  frame = inspect.currentframe().f_back
  fileNm = os.path.basename(frame.f_code.co_filename)
  funcNm = frame.f_code.co_name
  lineNo = frame.f_lineno

  print( fileNm, "%s:%s" %(funcNm, lineNo) )

def func():
  dbg()

def main():
  dbg()
  func()


main()



以下のリンク先のNpdbですぐに確認しよう!
----------------------------------------------------------------------------------
誰でも簡単に使える、 クラウド パイソンデバッカー (IDE/編集可能)
 Npdb

リンク先は、  http://simple-and-useful.net/index-j.html
----------------------------------------------------------------------------------

2018年10月7日日曜日

パイソンのデバッグ テクニック1

ここでは、パイソンのデバッグテクニックとして
デバッグ関数を作成してみた。
以下がその関数である。



def mydbg( s ):

    print( s )

    fileName ="dbg.txt"
    with open( fileName, mode='w') as f:
        f.write(s)
    
    
    
mydbg("abcdefg")








ご存知だと思いますが、上記をモジュールにして
(モジュールにするには、上のソースをmydbg.pyのファイル名にして
カレントフォルダーに保存します)

インポートするには、簡単です
こんな感じでインポートすればOKですね。



#import mydbg
from mydbg import *

mydbg("douda-hyouji")



----------------------------------------------------------------------------------
誰でも簡単に使える、 クラウド パイソンデバッカー (IDE/編集可能)
 Npdb

リンク先は、  http://simple-and-useful.net/index-j.html
----------------------------------------------------------------------------------