当前位置: 首页 > 面试题库 >

如何使用PyCharm启动远程调试?

卫阳炎
2023-03-14
问题内容

我正在尝试在Windows主机上的PyCharm和运行django应用程序的debian虚拟主机之间进行调试。说明说要安装egg,添加导入,然后调用命令。我认为这些事情需要在debian主机上完成吗?

好吧,那我应该把这两行放在哪个文件中?

from pydev import pydevd
pydevd.settrace('not.local', port=21000, stdoutToServer=True, stderrToServer=True)

我尝试将其放入settings.py中,但是得到了这种东西…

File "/django/conf/__init__.py", line 87, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
File "/django/utils/importlib.py", line 35, in import_module
    __import__(name)
File "/settings.py", line 10, in <module>
    pydevd.settrace('dan.local', port=21000, stdoutToServer=True, stderrToServer=True)
File "/pycharm-debug.egg/pydev/pydevd.py", line 1079, in settrace
    debugger.connect(host, port)
File "/pycharm-debug.egg/pydev/pydevd.py", line 241, in connect
    s = StartClient(host, port)
File "/pycharm-debug.egg/pydev/pydevd_comm.py", line 362, in StartClient
    sys.exit(1)
SystemExit: 1

pycharm只是坐在那里“等待连接”


问题答案:

PyCharm(或你的选择依据)充当“服务器”,而你的应用程序是“客户端”;因此,你首先启动服务器-告诉IDE’调试’-然后运行客户端-这是其中包含settrace语句的一些代码。当你的python代码命中时,settrace它将连接到服务器pycharm-并开始向其提供调试数据。

要做到这一点:

1.将pydev库复制到远程计算机

所以我不得不将文件复制C:\Program Files\JetBrains\PyCharm 1.5.3\pycharm-debug.egg到我的linux机器上。我把它放在/home/john/api-dependancies/pycharm-debug.egg

2.将鸡蛋放入PYTHONPATH中

希望你能体会到除非Python能够找到它,否则你将无法使用它。我想大多数人都使用easy_install,但在我的实例中,我通过添加以下内容明确添加了它:

   import sys
   sys.path.append('/home/john/app-dependancies/pycharm-debug.egg')

这仅是必要的,因为我仍然无法成功安装鸡蛋。这是我的解决方法。

3.设置调试服务器配置

在PyCharm中,你可以通过以下方式配置调试服务器:

运行 -> 编辑配置:打开“运行/调试配置”对话框
默认值 ->“ Python远程调试”:是要使用的模板
填写本地主机名和端口,你可能会想“使用路径映射”,但在以下所有内容中都有更多信息…
“好”


本地主机名:表示服务器的名称-在我的情况下就是Windows主机-或实际上是Windows主机的IP地址,因为我的远程计算机不知道该主机名。因此,虚拟(远程)计算机必须能够访问主机。 ping并且netstat对此有好处。

端口:可以是你喜欢的任何空的非特权端口。例如:21000不太可能被使用。

现在不用担心路径映射。

4.启动调试服务器

运行 -> 调试:启动调试服务器-选择刚创建的配置。
调试控制台选项卡将出现,你应该

 Starting debug server at port 21000

在控制台中,这意味着ide调试服务器正在等待你的代码打开与其的连接。

5.插入代码

这在单元测试中起作用:

from django.test import TestCase
class APITestCase(TestCase):
    def test_remote_debug(self):
        import sys
        sys.path.append('/home/john/dependancies/pycharm-debug.egg')
        from pydev import pydevd
        pydevd.settrace('192.168.33.1', port=21000, suspend=False)

        print "foo"

在django网络应用程序中,你放置它的位置有点挑剔-似乎只有在完成所有其他操作后才能起作用:

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

    sys.path.append('/vagrant/pycharm-debug.egg')
    import pydevd
    pydevd.settrace('192.168.33.1', port=21000, suspend=False)

同样,IP地址是运行Pycharm的框;你应该能够从运行代码/网站的框中ping该IP地址。端口是你的选择,只需确保已告诉pycharm在同一端口上侦听即可。而且我发现它的suspend=False问题比默认值少,不仅立即停止运行,因此你不确定它是否在工作,而且还尝试流式传输到stdin / out,这也可能使你感到悲伤。

6.打开防火墙

Windows 7防火墙默认情况下将阻止你的传入连接。在远程主机上使用netstat,你将能够看到SYN_SENT从未建立过,至少直到你向Windows防火墙中为应用程序“ pycharm”添加了例外之后,它才能建立。

OS / X和Ubuntu没有防火墙来扑朔迷离(默认情况下,可能有人稍后再应用)。

7.设置一个断点并运行代码

毕竟,当一切按计划进行时,你可以设置一个断点-在settrace运行后的某个位置-pycharm控制台将显示

Connected to pydev debugger (build 107.386)

在“调试器”标签下,变量堆栈将开始工作,你可以逐步执行代码。

8.映射

映射告诉pycharm在哪里可以找到源代码。因此,当调试器说“我正在运行文件/foo/bar/nang.py的393行时,Pycharm可以将该远程绝对路径转换为绝对本地路径…并向你显示源代码。

/Users/john/code/app/    /opt/bestprice/app/
/Users/john/code/master/lib    /opt/bestprice/lib/python2.7/site-packages


 类似资料:
  • 本文向大家介绍pycharm远程调试openstack代码,包括了pycharm远程调试openstack代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了pycharm远程调试openstack的具体代码,供大家参考,具体内容如下 1.安装pycharm专业版 本文安装pycharm 2016.2.3专业版。网上教程较多,这里不做详细介绍,只要到pycharm官网上下载应用程序进

  • 我希望我的Terraform配置预配服务器并在最后通过调用命令启动服务并继续运行它。我尝试使用nohup并使用Remote-exec进行屏幕: nohup: 屏幕: 我通过手动登录来检查命令是否正在运行。但他们并没有保持流程运行。如果我手动尝试这些命令,并且使用ssh调用它们,这些命令确实有效。 如何使用Terraform预配来启动命令并在返回控制流时保持其运行?

  • 本文向大家介绍Pycharm远程调试openstack的方法,包括了Pycharm远程调试openstack的方法的使用技巧和注意事项,需要的朋友参考一下 Pycharm对openstack进行远程调试,供大家参考,具体内容如下 总共分三步: 一. 安装samba(非必须的) 二. 安装并配置pycharm 三. 修改openstack的代码(以nova为例) 一.为了实现远程代码的map要首先进

  • 本文向大家介绍pycharm远程调试openstack的图文教程,包括了pycharm远程调试openstack的图文教程的使用技巧和注意事项,需要的朋友参考一下 今天我要讲如何远程调试openstack。首先我们使用的工具是Pycharm. 1.首先介绍一下环境 我的openstack是使用rdo一键安装的,安装在一台centos的虚拟机上,虚拟机的IP地址是192.168.102.129 2.

  • 我通过maven-archetype-mojo创建了一个maven插件。我的intellij版本是:intellij 2018.1.7 并且我已经尝试了以下步骤来启动远程调试过程。 我创建了一个远程调试配置并将其指向端口8000 我在项目文件夹的终端中运行mvnDebug clean install,它显示: 准备在调试模式下执行Maven,侦听地址为8000的传输dt_socket null

  • 我很难弄清楚如何设置在Docker容器中运行的python应用程序(Flask)的远程调试。具体来说,我使用的是docker compose、PyCharm professional和python 3.5。这就是我到目前为止所做的: > 我把pycharm-debug-py3k.egg复制到项目文件夹 我在wsgi.py文件中添加了以下行: 我在PyCharm中创建了一个远程调试配置(通过将本地机