You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
目的 エラー(例外)が発生した時、自動的にデバッガ「pdb」を起動して、 その時点のスタックフレームや上流階層に逆上って状況の確認がしたい! でも止めたい箇所が分散していていちいちブレークポイント貼ったりステップ実行とかしてらんない! みたいな状況で役に立つデバッグ手法です。 準備 以下をdebug.pyとして保存しましょう。: 1 import sys 2 3 def hook(type, value, tb): 4 if hasattr(sys, 'ps1') or not sys.stderr.isatty(): 5 sys.__excepthook__(type, value, tb) 6 else: 7 import traceback, pdb 8 traceback.print_exception(type, value, tb) 9 print() 10 pdb.pm()
Pythonにはtraceモジュールというものが標準ライブラリであって、これを使うとpythonプログラムを実行した時に、どのモジュールのどの関数を呼んでいるかの情報を出力することができる。使いどころとしては、使っているライブラリやツールが「これ実際どう動いてるんだろう?」っていうのを把握したい時に重宝すると思う。pdbなんかのデバッガでもいいんだけど、「ブワッとトレース実行した結果を出しておいてあとで一気に見る」みたいな時に特に有用だと思う。 使ってみよう ためしにtomahawkをtrace使って実行してみた。 $ python -m trace -t /usr/local/bin/tomahawk -h localhost uptime 実行には -m trace と -t (--trace) オプションをつける。実行結果はこんな感じ。 --- modulename: tomahaw
Python debugging tools 05 June 2013 (updated 17 February 2016) This is an overview of the tools and practices I've used for debugging or profiling purposes. This is not necessarily complete, there are so many tools so I'm listing only what I think is best or relevant. If you know better tools or have other preferences, please comment below. Logging * Yes, really. Can't stress enough how important
最後に、Ruby,Pythonのデバッガの実装について調べてみました。 Pythonには、pdb。 Rubyにはdebug.rbというデバッガが存在します。 これらは、各言語が提供するフック関数を利用して実装されています。フック関数を設定する関数(メソッド)は以下になります。 Python sys.settrace (Cレベルでは、ceval.cのPy_tracefunc関数*1 ) Ruby Kernel#set_trace_func (Cレベルでは、eval.cのset_trace_func関数) Pythonのsys.settraceの引数で渡した関数は、以下のタイミングで呼び出されます*2 call: なんらかの関数呼び出し時 line: Pythonインタプリタが新しい行を実行する時 return: 関数の呼び出しからreturnする寸前 exception: 例外が発生した時
28.12. inspect — 使用中オブジェクトの情報を取得する¶ バージョン 2.1 で追加. inspect は、モジュール・クラス・メソッド・関数・トレースバック・フレームオブジェクト・コードオブジェクトなどのオブジェクトから情報を取得 する関数を定義しており、クラスの内容を調べる、メソッドのソースコードを取得する、関数の引数リストを取得して整形する、トレースバックから必要な情報 だけを取得して表示する、などの処理を行う場合に利用します。 このモジュールの機能は、型チェック・ソースコードの取得・クラス/関数から情報を取得・インタープリタのスタック情報の調査、の4種類に分類する事ができます。 28.12.1. 型とメンバ¶ getmembers() は、クラスやモジュールなどのオブジェクトからメンバを取得します。名前が”is”で始まる 16 個の関数は、 getmembers()
pythonとりあえず自分用に。あとでちゃんとまとめ直す...かも。コマンドh(elp) [command]コマンドのヘルプを表示引数なしで利用可能コマンド一覧を表示s(tep)一行実行(ステップイン)n(ext)一行実行(ステップオーバー)unt(il)(Python2.6から)行番号が現在行より大きくなるか、現在のフレームから戻るまで実行r(eturn)returnされるまで実行(ステップアウト)c(ontinue)次のブレークポイントまで実行j(ump) lineno次に実行する行を指定最も底のフレームでのみ実行可能forやfinallyなどの中には飛び込めないl(list) [first[, lastソースコードを表示引数なし 前後11行引数一つ その行から11行引数二つ 与えられた範囲行a(rgs)現在の関数の引数リストをプリントp expression現在のコンテキストでexp
2004年にはすでに標準ライブラリに入っていたのに「スクリプト言語でもステップ実行とかできたらいいのにね」とか言われちゃう不憫なpdbについて軽く解説。pdb不憫な子! まず適当にスクリプトを書きます。 ~$ cat t.py for i in range(10): sum += i print sum実行するとエラーになります。 ~$ python t.py Traceback (most recent call last): File "t.py", line 2, in <module> sum += i TypeError: unsupported operand type(s) for +=: 'builtin_function_or_method' and 'int'ワー、なんでエラーになったんだろー(棒読み) そこでおもむろに-m pdbをつけてステップ実行します。 ~$ p
In this quick tutorial, Marakana Python instructor, Simeon Franklin, is going to show you how you can debug your Python applications using the Python debugger, pdb. Simeon will start off with a quick intro to pdb: what it is, when to use it, and how to launch pdb. Then he'll jump into a demo of pdb in action. Want to learn more about Python? Check out some of Simeon's upcoming Python training cour
31.1.11 Better debugging with pdbpp A short while ago I found out about an alternative to ipdb, pdbpp. among other features pdbpp offers, tab completion, syntax highlighting better code display (sticky mode). It extends pdb so import pdb;pdb.set_trace() still works. Sadly, there is a single thing one has to do to make it work with zope. When pdb fires up, it loads some third party tools, one o
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー 以前pudbというCUIベースのソースコードデバッガを紹介した。コンソール環境で利用できてなかなかファンシーなのだが,デバッガをいちいち立ち上げる必要があるので少々面倒だ。今回はより手軽にCUIベースのデバッガを起動する方法を紹介する。 方法は簡単。debugというパッケージを「pip debug」などでインストール,デバッグを開始したい場所に「import debug」とするだけで,プログラムのその位置でシンタックスカラーリングの効いたファンシーなデバッガが立ち上がる。 「n」を押して実行を進めたり,print文を使って実行中の変数の中身を表示したりできる。実行中のプログラムも表示し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く