5

pygtkに基づく python プログラムをデバッグしていますが、プログラムが正しい共有ライブラリを使用していることを確認したいと考えています。

pygtkGTK+pythonのラッパーです。私はすでにツールをGTK+使用してコンパイルしjhbuildており、デバッグ中の python スクリプトが からコンパイルされたライブラリを使用していることを確認したいと考えていますjhbuild

インポートするgtkと、pygtk次のようになります。

import gtk
import pygtk
print(gtk.__file__)
# /usr/lib/python2.7/site-packages/gtk-2.0/gtk/__init__.pyc
print(pygtk.__file__)
# /usr/lib/python2.7/site-packages/pygtk.pyc

たとえば、gtk を使用してウィンドウを表示できます。

w = gtk.Window()
w.show()

これにより、gtk を使用して画面にウィンドウが描画されます。ただし、どの共有オブジェクトが使用されているかわかりません。多くのバージョンがインストールされており、原因を見つける必要があります。

4

2 に答える 2

12

モジュールが動的にロードされている場合、Linuxを使用していると仮定すると、次のようにして見つけることができますlsof(8)

$ python
>>> import os
>>> os.getpid()
29982

$ lsof -p 29982 > before

次に、Python に戻り、モジュールをインポートします。

>>> import gtk
$ lsof -p 29982 > after
$ diff <(awk '{print $NF}' after) <(awk '{print $NF}' before)

収量:

< /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0.3200.2
< /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
< /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0.2400.30
< /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0.2400.30
< /usr/lib/python2.7/dist-packages/gtk-2.0/gtk/_gtk.so
...
于 2017-11-17T08:13:16.307 に答える