只是一次小的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. java中字节和字符的转换操作

    package com.ywx.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputSt ...

  2. (转)淘淘商城系列——SSM框架整合之表现层整合

    http://blog.csdn.net/yerenyuan_pku/article/details/72721120 上文我们一起学习了Service层的整合,本文将教大家如何整合表现层. 我们在t ...

  3. bootstrap 整理

    form-control   输入框,独占一行,占满. form-group  增加下边距 <label> 字体会加粗,不是独占一行 .col-xs-  超小屏 .col-sm- 平板 . ...

  4. 移动端1px线适配问题-------适配各种编译CSS工具 stylus sass styled-componet实现方法

    其实在stylus与sass中实现移动端1像素线各个手机设备的适配问题的原理是一样的, 首先我还是先介绍一下原理和所依赖的方法 原理:其实他们都是通过css3的媒体查询来实现的 步骤思路: 1.给目标 ...

  5. iPhoneX 适配H5页面的解决方案

    由于在iPhonex在状态栏增加了24px的高度,对于通栏banner规范的内容区域会有遮挡情况. 解决方案:在页面通栏banner顶部增加一层高度44px的黑色适配层,整个页面往下挪44px,这种做 ...

  6. 零基础入门学习Python(23)--递归:这帮小兔崽子

    知识点 我们都知道兔子繁殖能力是惊人的,如下图: 我们可以用数学函数来定义: 假设我们需要求出经历了20个月后,总共有多少对小兔崽子? 迭代实现 def fab(n): n1 = 1 n2 = 1 n ...

  7. 零基础入门学习Python(10)--列表:一个打了激素的数组

    前言 有时候我们需要把一些东西暂时保存起来,因为他们有着一些直接或间接的联系,我们需要把它们放在某个组或者集合中,未来可能用得上. 很多接触过编程的朋友都知道,都接触过数组这个概念,那么数组这个概念事 ...

  8. Yahoo前端优化的35条军规

    摘要:无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化34条军规,不过现在已经是35条了,所以可以说是雅虎前端优化的35条军 ...

  9. Yum:更换aliyun的yum源

    备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup centos7 wget -O /et ...

  10. MySQL-----操作练习

    一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: select A.student_id from (select ...