PyCharm调试器线与现实不同

时间:2017-03-07 14:55:14

标签: debugging django-rest-framework pycharm

我使用的是Django Rest Framework 3.5.4和Pycharm Professional 2016.3.1。顺便说一句,我让PyCharm配置为在本地流浪盒中使用virtualenv。

当我在启用调试器的情况下逐步执行DRF代码时,我可以看到它正在逐步显示空行,调试器中的变量与范围内的变量不匹配(如图所示rest_framework.response.Response.rendered_content() ):

breakpoint on blank line

这是另一个示例,显示调试器中作用域中的变量如何与传入的单个变量不匹配。另外,请注意断点在文档字符串中的清晰度:

enter image description here

这不是我第一次在PyCharm中看到过这个;虽然查看库源通常有效,但偶尔我会看到源缓存与正在执行的内容不匹配。

我的问题是:我该如何纠正这种行为?我试图吹走我的virtualenv,然后重建它并与PyCharm重新关联。我也尝试了File > Invalidate Caches / Restart,在这个特殊情况下都没有帮助。

编辑:

我认为我已经通过删除所有〜/ Library / Caches / 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中。这意味着每个调试会话都需要重新关联每个文件;事情显然是错误的。

3 个答案:

答案 0 :(得分:0)

我有一个类似的问题,两个文件具有相同的路径,调试器使用了错误的文件,但在我的情况下文件确实略有不同。

使用PyCharm 2017.2.3在Windows上修复如下:

  1. 退出PyCharm。
  2. 从以前版本的PyCharm中删除剩余的文件夹。就我而言,有.PyCharm2017.2.PyCharm2017.1个文件夹。
  3. 重启PyCharm。
  4. 再次调试,在提示选择正确的源时选择自动检测。

答案 1 :(得分:0)

在调试配置中设置“路径映射”

答案 2 :(得分:0)

我在Mac上使用PyCharm。有同样的问题。看到我有大约六个文件夹可以追溯到2016年。删除了除最新文件夹以外的所有文件夹,它解决了这个问题。