troushoo

Linux 上の Python プロセスのハングの原因を GDB を用いて調査

概要

Linux 上の Python プロセスのハングの原因を GDB を用いて調査する方法を紹介します。

内容

準備
1. Python のデバッグ用モジュールをインストールします。
[ apt-get install python-dbg libpython-dbg ]


2. ハングしている Python プロセスの PID を取得します。
[ pgrep python ]


ハングしている Python プロセスに GDB をアタッチ
1. GDB をハングしている Python プロセスにアタッチします。
[ gdb –p <pid> python ]


2. 全てのスレッドのコールスタックを見てみます。
[ thread apply all py-bt ]
結果、ここでは、raw_input() で、入力待ちになっていたことがわかります。


3. そのほか [ py-locals ] でローカル変数の確認や、[ py-list ] でソースコードの表示も可能です




今回用いたプログラム
今回用いたプログラムは以下です。GitHub にも公開しました。

def myfunc1(x):
  input = raw_input()
  print input + " is written"
 
def myfunc2(x):
  myfunc1(x)
 
myfunc2(10)


情報元
Advanced Python Debugging Techniques Using GDB (英語)
Python Developer's Guide (英語)

関連記事
リバース実行を用いた gdb によるデバッグ
  1. 2017/02/23(木) 23:39:15|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0
<<Fiddler を用いて手動で Google の OAuth 2.0 システムのアクセストークン、ID トークンを取得 | ホーム | 暗号化された SMB 通信を、複合した状態でキャプチャーする Windows の標準コマンド>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://troushoo.blog.fc2.com/tb.php/333-f398c9fb
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (92)
ネットワーク (76)
Visual Studio (56)
SOS・Psscor2/Psscor4 (25)
WinDbg (25)
Linux (24)
Azure (17)
Tips (20)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する