1

正如今天在Production Troubleshooting with Cloud Debugger now available for Python中宣佈的,據說我現在可以使用Python調試器。谷歌雲調試器不適用於Python AppEngine託管虛擬機

我在GCE映像上運行AppEngine託管虛擬機,所以我遵循Setting up Python on Compute Engine的指南。我已經修改了我的Dockerfile添加pip install google-python-cloud-debugger(我也試過直接安裝磁帶庫爲我的應用程序/ lib目錄,其中包括在我的sys.path):

FROM gcr.io/google_appengine/python-compat 
RUN pip install google-python-cloud-debugger 
ADD . /app 

然後,我已經修改了我的main.py使調試器:

try: 
    import googleclouddebugger 
    googleclouddebugger.AttachDebugger() 
except ImportError: 
    pass 

不幸的是,當我提交代碼,運行gcloud preview app gen-repo-info-file,並推動它,我不能使用調試器。當我轉到https://console.developers.google.com/debug時,它會在右側加載我的github存儲庫,但在左側導航區域中看到一條錯誤消息:

調試不可用。您可以調試在App Engine或Compute Engine上執行 Java應用

任何想法可能什麼錯,或如何調試調試器?

回答

1

雖然其他線程提供了很多機會來遵循調試中的常見最佳實踐,但解決方案比我們想象的要簡單得多。您看到的錯誤很可能是由於使用python管理的虛擬機尚不支持雲調試器according to the documentation的支持平臺。

但是,隨着雲調試器服務的增長,以及雲調試器全部是Python的事實是just announced on the 7th,這肯定有可能會改變。

如果您發現某些內容丟失,請隨時提交Cloud Platform Public Issue Tracker中的功能請求,並想讓我們知道您和其他可能對此問題進行明示處理的人感興趣。

+1

Ahhh,我以爲「在Google Compute Engine實例上運行的任何Python應用程序」都捕獲到了「在GCE實例上運行的Python託管VM應用程序」的情況,但查看Java支持的平臺可以更清楚地看到託管VM不受支持然而。謝謝! –

+0

因此http://googlecloudplatform.blogspot.tw/2016/02/diagnose-problems-in-your-production-apps-faster-with-Google-Cloud-Debugger.html提及: 「在此版本中,Cloud Debugger現在可用於以下語言和平臺:運行在App Engine,App Engine託管虛擬機和計算引擎上的Python應用程序「 但是,我無法讓調試器找到可調試應用程序,並且官方文檔位於https:/ /cloud.google.com/debugger/仍然會說「在App Engine上運行的Python App Engine應用程序」。 (並且不提託管虛擬機)。 所以...我認爲博客文章是錯誤的? –

0

編輯:雖然這個答案的線程包含有用的調試步驟,問題的根本原因解釋在我的其他發佈的答案。

很可能兩件事情都發生在這裏:

第一個是你的點子命令,運行作爲一個普通用戶,要訪問系統安裝位置並沒有root權限失敗。試試sudo pip install...pip install -t lib/ google-python-cloud-debugger

發生的第二件事是您的代碼正在捕獲一個ImportError並且僅僅是一個pass ing。我之前在作爲蟒蛇演說者的生活中看到過這種構造,老實說,如果我曾經看到過它,那麼它就是一隻霰彈槍。 有什麼用途?如果您採取這樣的預防措施,錯誤日誌會很快顯示出問題。

+0

我一直在逐字跟蹤Google文檔,針對您提到的兩個問題。 (non-sudo pip和quiet-pass。)或許值得告訴文檔編寫者修復該文檔? 對於安靜通行證,我添加了一條記錄聲明,但我不知道我在哪裏看到它。它不在每個servlet日誌中(因爲它在wsgi服務器初始化之前),它不在VM實例的串行控制檯輸出中。在main.py中還有其他日誌,我從來沒有在prod中看到過。 –

+0

至於點,我已經嘗試安裝googleclouddebugger庫到我推,如我原來的問題中提到的lib /。它不起作用,但也許它正在取得更多進展?它看起來像每個請求立即500s(沒有任何日誌輸出)。 「/ mapreduce/controller_callback」請求返回200,但他們通過我的app.yaml通過不同的wsgi服務器/模塊進行路由,所以我不確定這是多麼相關。如果我在我的應用直接服務500s時打開雲調試器,它會繼續告訴我相同的錯誤消息:「調試不可用」 –

+0

如果使用這種方法,您需要將'lib /'添加到您的Python路徑夾。 'sudo'無助於使模塊全局可見嗎? – Nick

0

檢查Python的雲調試器安裝正確,最簡單的方法是嘗試在Python交互式控制檯將其導入:

docker run -i -t cdbgtest bin/bash 
python 
import googleclouddebugger 
print googleclouddebugger.__version__ 

我的猜測是,在你的情況pip install google-python-cloud-debugger失敗。如果是這樣的話,那很可能是因爲過時的pip。安裝pipsudo easy_install pip將解決它。

相關問題