• pydevd 一次trouble shooting


    只是一次小的trouble shooting. 關於python的遠程調試功能.但是由於思路混亂.浪費了許多時間,記錄一下整個過程.作爲改進的參考.

    问题背景:

    我之前一直在ubuntu上用pycharm开发。 在远程调试的时候用pydevd模块。 该模块非常简单,只要在远程的运行代码上加入如下代码即可

            import pydevd
            pydevd.settrace('192.168.1.20', port=11111, stdoutToServer=True, stderrToServer=True)

    但是今天为换成了centos7开发,还是用pycharm。 但是远程调试不好使。

    问题描述:

    在加入了调试代码,本地开启了调试服务后,远程的代码一直出exception, 从现象可好像是连接不到本地的调试服务。

    思考路径:

    首先,想到本地可能有selinux的服务没关闭,于是关掉。不好使。 这期间夹杂着各种尝试,比如重新启动电脑。。。

    其次,各种检查本地和远程。各种瞎试。

    最后,决定从网络方面入手。

    把上面的调试命令直接加入python interpreter, 连接别人的电脑和自己的电脑。最后终于发现问题。

    但总结了一下,其实如果思路清晰,这个问题可能最多花5分钟。甚至不用。

    首先,想到本地可能有selinux的服务没关闭,于是关掉。不好使。 这期间夹杂着各种尝试,比如重新启动电脑。。。

    正确思路:既然看起来像是网络问题,那就仔细思考一下网络各种全线等。除了selinux 还有iptables, 还有firewalld。(其实最终问题就是firewalld。 )

    其次,各种检查本地和远程。各种瞎试。

    正确思路:就算是没有想到firewalld。检查了iptables 发现是关闭的。那么也不应该一顿瞎试,应该思路清晰。比如最直观的就是想到先在interpreter中直接运行pydevd看一看错误信息

    最后,决定从网络方面入手。

    正确思路:在interpreter中调试发现是No route to host问题。 这时也不应该乱试。应该思路清晰。比如确立几个尝试方案。比如,既然确定是网络则可以做几个对比。

    方案1:

    远程机器为client, 别人的机器为server

    远程机器为client, 自己的机器为server

    这样可以发现是自己机器的问题。

    方案2 :

    自己机器为client , 自己机器为server

    远程机器为client , 自己机器为server

    这样可以确定就是远程电脑和自己电脑之间问题

    方案3 :

    换其它端口尝试

    这期间可以用socket监听 connect 。 lsof等手段

     

  • 相关阅读:
    毕业设计(高校网上作业提交系统)开发记录(15)
    毕业设计(高校网上作业提交系统)开发记录(14)
    毕业设计(高校网上作业提交系统)开发记录(13)
    毕业设计(高校网上作业提交系统)开发记录(12)
    毕业设计(高校网上作业提交系统)开发记录(11)
    毕业设计(高校网上作业提交系统)开发记录(10)
    毕业设计(高校网上作业提交系统)开发记录(9)
    毕业设计(高校网上作业提交系统)开发记录(8)
    Java实现沙箱测试环境支付springboot
    Java面试宝典2019
  • 原文地址:https://www.cnblogs.com/kramer/p/4497833.html
Copyright © 2020-2023  润新知