只是一次小的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等手段

pydevd 一次trouble shooting的更多相关文章

  1. Linux 常见的trouble shooting故障排错

    Linux 常见的trouble shooting故障排错 备份开机所必须运行的程序对一个运维人员来说是非常有必要的.在实际生产环境中,系统和数据基本都是安装在不同的硬盘上面,因为企业最关心的还是数据 ...

  2. Trouble Shooting的一些感想(实时补充)

    最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...

  3. neutron trouble shooting - ip can not ping

    neutron创建了一个router后,显示列表如下: [root@controller01 keystone]# neutron router-port-list router +--------- ...

  4. rsyslog trouble shooting

    openstack,swift的log不输出了.trouble shooting过程 , 发现我们的程序 /var/log/swift/proxy.log等总是不输出log. 因为log rsyslo ...

  5. Ubuntu上Docker安装Trouble Shooting

    (我的环境是Mint7.1,相当于Ubuntu14.04) 1,首先,根据docker.com上的安装指导来安装docker,这里就不重复了,参考: https://docs.docker.com/i ...

  6. JSBinding / FAQ & Trouble Shooting

    Q: Why javascript file extension is .javascript?A: Because Unity treats .js files as Unity script an ...

  7. DG - dataguard trouble shooting的相关视图

    •V$DATAGUARD_STATS:显示dataguard统计信息 备库 SQL> select * from v$dataguard_stats; NAME VALUE UNIT TIME_ ...

  8. TROUBLE SHOOTING: FRM-30425

    关键字:Oracle Form buider FRM-30425 汇总 错误信息如下: FRM-30425: Summarized database item must reside in a blo ...

  9. nginx trouble shooting

    除去配置语法失误.逻辑失误 nginx中的大部分问题都是前端到后端联通性 curl 域名没反应 cyr@test:/etc/nginx/sites-enabled$ curl test.hehe.ex ...

随机推荐

  1. pthread Win32多线程编程的一些知识和感想

    研究遗传算法的一大诟病就是每次运行程序的结果并不是完全一样的,有时候能找到最优解有时候找不到最优解,这就是遗传算法的概率性导致的.那么怎么评价你的方法的好坏呐,这时候就要多次独立运行程序最后取结果的平 ...

  2. 迅为iTOP-4412物联网开发板入门学习高手进阶项目开发超树莓派

    免费视频教程: 为初学者精心录制的整套视频教程全部免费,随IT技术发展而不断增添的视频教程仍然免费!一支有经验的工程师团队会始终成为您的后盾. 项目实战---全开源: 手机远程控制开发板 门禁系统 W ...

  3. eclipse自动为变量生成Get/Set函数

    启动Eclipse,打开demo工程.如图:   假定为成员变量test生成Get/Set函数. 光标定位到该成员变量,如图:   右键选择“source”-“Generate Getters and ...

  4. gitlab数据迁移到docker容器

    需求:想把服务器上的gitlab迁移到docker容器里面注意:gitlab的迁移,必须保持gitlab的版本一致,此处使用的是:8.4.3,数据库版本和类型一致,此处使用的是postgresql 9 ...

  5. java_tcp_简单示例

    package netProgram; import java.io.DataOutputStream; import java.io.IOException; import java.net.Ser ...

  6. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (三) -- Header Exchange

    此模式下,消息的routing key 和队列的 routing key 会被完全忽略,而是在交换机推送消息和队列绑定交换机时, 分别为消息和队列设置 headers 属性, 通过匹配消息和队列的 h ...

  7. swiper实现响应式全屏自动轮播

    html: <!--轮播 --> <div class="Excellent_swi"> <div class="swiper-contai ...

  8. Linux从入门到适应(四):Ubuntu 16.04环境下,安装Nvidia驱动,cuda9.2和 cudnn

    在安装深度学习框架之前,cuda和cudnn是必须要提前安装的,现在按照流程而nvidia驱动的版本和cuda版本有这一些对应关系,所以需要按照版本进行安装,现在说一下如何安装: 1 安装nvidia ...

  9. python 3 廖雪峰博客笔记(二) python解释器

    python 解释器用于理解 python代码,存在多种python解释器 CPython 官方版本python解释器,用C语言开发,使用最广泛 IPython 基于CPython,在交互方式上有所增 ...

  10. 大项目之网上书城(七)——书页面以及加入购物车Servlet

    目录 大项目之网上书城(七)--书页面以及加入购物车Servlet 主要改动 1.shu.jsp 代码 效果图 2.shu.js 代码 3.index.jsp 代码 效果图 4.FindBookByC ...