1, 對于要遠端調試的WSGI web應用中,添加如下代碼,其中172.16.1.122是指遠端安裝eclipse機器的ip位址。
import pydevd
pydevd.settrace(‘172.16.1.122’, 1234, stdoutToServer=False, stderrToServer=False)
若用了monkey_patch的話,記得将thread設定成Flase, eventlet.monkey_patch(os=False, thread=False)
舉例, 假如我們要調試nova-compute,可照下列方式啟動服務,它将自動做如上設定
nova-compute –remote_debug-host 172.16.1.122 –remote_debug-port 1234
2, eclipse端,首先設定環境變量
import sys
sys.path.append(‘/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/’)
或者:
export PYTHONPATH=/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/:$PYTHONPATH
或者在eclipse工程點右鍵的屬性的PyDev-PYTHONPATH裡添加一個External Libraries,方法多得很,都行。
3,eclipse端,其次要保證eclipse端也有同樣的代碼,如果在不同目錄,可以使用修改/bak/java/eclipse/plugins/org.python.pydev_3.1.0.201312121632/pysrc/pydevd_file_utils.py檔案:
PATHS_FROM_ECLIPSE_TO_PYTHON = [(r’/bak/openstack’, r’/server_side/openstack’)]
4, 将遠端nova-compute服務啟動後(pydevd.settrace之後),在本地的eclipse中進入”Debug”視圖後會看到一個“PyDev: start the pydev server”按鈕然後點選它,這時候eclipse就和遠端連接配接上了。
剩下該設定斷點設定斷點,平時該怎麼做就怎麼做了。
我在看完上面的資料後還是很疑惑,感覺沒說清楚。 經過使用測試後總結下經驗,使用中大家需注意以下四個問題:
- eclipse端是debug服務端 , 即端口的監聽端, 也就是說遠端要調試的python代碼檔案是作為用戶端連接配接eclipse端的端口(如:預設端口 5678), 切記!!我在這裡吃了大虧。
- 在eclipse插件plugins目錄查找到pydevd.py檔案後,将檔案所在的整個個檔案夾copy到需要調試的機器的python檔案的site-packages目錄下,并保證可以通路到pydevd.py(我使用了在site-packages目錄下建立pysrc.pth檔案指定路徑方式),可參考文章最後的url。
- 如果遠端調試,一般python代碼的路徑在eclipse端與遠端機器上的路徑是不一樣的,一定記住修改pydevd_file_utils.py中的PATHS_FROM_ECLIPSE_TO_PYTHON值,修改具體值可以看下檔案中關于這個變量的注釋,而且注釋中還有舉例說明。
- 在需要調試的代碼中使用下面代碼:
import pydevd pydevd.settrace(‘eclipse端伺服器位址‘, port=端口5678, stdoutToServer=True, stderrToServer=True)
官網參考: http://www.pydev.org/manual_adv_remote_debugger.html
其它參考:http://blog.csdn.net/tantexian/article/details/47003385