2017-03-07 43 views
2

我正在使用Django Rest Framework 3.5.4和Pycharm Professional 2016.3.1。順便提一句,我有PyCharm配置爲在本地流浪盒內使用virtualenv。PyCharm調試器行與現實不同步

當我通過與調試器上的DRF執行代碼,我可以看到,它是通過空行步進,並在調試器中的變量不匹配的範圍(圖爲rest_framework.response.Response.rendered_content()):

breakpoint on blank line

這裏是另外一個例子,說明如何在範圍內的變量在調試器不通過單變量相匹配此外,請注意斷點如何顯然是一個文檔字符串:

enter image description here

這不是我第一次在PyCharm中看到過;雖然查看庫源通常有效,但偶爾我會看到源緩存和正在執行的內容之間不匹配。

我的問題是:我該如何糾正這種行爲?我嘗試吹走我的virtualenv,然後重建它,並與PyCharm重新合作。我也試過File > Invalidate Caches/Restart,在這個特殊的情況下都沒有幫助。

編輯:

我想我已經通過刪除所有的〜/圖書館/緩存/ PyCharmXX/remote_sources/*文件,遠程重新無效緩存,重啓PyCharm,並重新關聯的解決了這個問題翻譯與該項目。下次我嘗試調試同一個文件時,我得到了一個屏幕來選擇源文件。我點擊自動檢測,發現兩個版本是可用:

select local file for the file from remote host

我做了兩個即是可用之間的差異,並沒有什麼區別。此外,字節和修改時間的數量分別爲每個文件中的相同:

pnore at pnore-mbp in ~/Library/Caches 
$ ls -l PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py 
-rw-r--r-- 1 pnore HBS\Domain Users 60495 Mar 7 16:56 PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py 

pnore at pnore-mbp in ~/Library/Caches 
$ ls -l PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py 
-rw-r--r-- 1 pnore HBS\Domain Users 60495 Mar 7 16:56 PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py 

pnore at pnore-mbp in ~/Library/Caches 
$ diff PyCharm2016.3/remote_sources/974253138/308149114/rest_framework/serializers.py PyCharm2016.3/remote_sources/974253138/-328085538/rest_framework/serializers.py 
[no output] 

我任意選擇了後者之一,並且隨後,調試行號出現匹配該文件。我相信問題是PyCharm的先前版本已經將該路徑文件與緩存的舊版本的庫相關聯。我不知道爲什麼無效緩存本身不能解決問題。

不幸的是,關聯不會保留在PyCharm的調試會話之間。這意味着每個調試會話都需要重新關聯每個文件;有些東西顯然是錯的。

回答

0

我有一個類似的問題,兩個文件具有相同的路徑和調試器使用了錯誤的,但在我的情況下,文件確實有所不同。

定盤與PyCharm 2017年2月3日在Windows如下:

  1. 退出PyCharm。
  2. 刪除以前版本的PyCharm剩餘的文件夾。在我的情況下,有.PyCharm2017.2.PyCharm2017.1文件夾。
  3. 重新啓動PyCharm。
  4. 再次調試,當提示選擇正確的源時,選擇自動檢測。