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等手段
pydevd 一次trouble shooting的更多相关文章
- Linux 常见的trouble shooting故障排错
Linux 常见的trouble shooting故障排错 备份开机所必须运行的程序对一个运维人员来说是非常有必要的.在实际生产环境中,系统和数据基本都是安装在不同的硬盘上面,因为企业最关心的还是数据 ...
- Trouble Shooting的一些感想(实时补充)
最近一直做两个产品功能的Merge工作,代码Merge过来之后,发现了很多问题.经过Trouble Shooting,最终发现归根结底都是我们Merge的问题,例如有的Code没有Merge过来,Me ...
- neutron trouble shooting - ip can not ping
neutron创建了一个router后,显示列表如下: [root@controller01 keystone]# neutron router-port-list router +--------- ...
- rsyslog trouble shooting
openstack,swift的log不输出了.trouble shooting过程 , 发现我们的程序 /var/log/swift/proxy.log等总是不输出log. 因为log rsyslo ...
- Ubuntu上Docker安装Trouble Shooting
(我的环境是Mint7.1,相当于Ubuntu14.04) 1,首先,根据docker.com上的安装指导来安装docker,这里就不重复了,参考: https://docs.docker.com/i ...
- JSBinding / FAQ & Trouble Shooting
Q: Why javascript file extension is .javascript?A: Because Unity treats .js files as Unity script an ...
- DG - dataguard trouble shooting的相关视图
•V$DATAGUARD_STATS:显示dataguard统计信息 备库 SQL> select * from v$dataguard_stats; NAME VALUE UNIT TIME_ ...
- TROUBLE SHOOTING: FRM-30425
关键字:Oracle Form buider FRM-30425 汇总 错误信息如下: FRM-30425: Summarized database item must reside in a blo ...
- nginx trouble shooting
除去配置语法失误.逻辑失误 nginx中的大部分问题都是前端到后端联通性 curl 域名没反应 cyr@test:/etc/nginx/sites-enabled$ curl test.hehe.ex ...
随机推荐
- mybatis-paginator对SqlServer分页实现
package com.github.miemiedev.mybatis.paginator.dialect; import com.github.miemiedev.mybatis.paginato ...
- webpack2代码分割
代码分割-CSS 要通过webpack打包CSS,像任何其他模块一样将CSS导入JavaScript代码,并使用css-loader(它输出CSS作为JS模块), 并可选地应用ExtractTextW ...
- 数组(Arry)几个常用方法的详解
join() 方法用于把数组中的所有元素放入一个字符串.元素是通过指定的分隔符进行分隔的. arrayObject.join(separator)separator 可选.指定要使用的分隔符.如果省略 ...
- PHP文件及目录考察点
文件读取/写入操作 fopen()函数 用来打开一个文件,打开时需要指定打开模式 打开模式 模式 |作用 --- |--- 'r' |只读方式打开,将文件指针指向文件头. 'r+' |读写方式打开,将 ...
- 编写高质量Python代码的59个有效方法
Python学习资料或者需要代码.视频加Python学习群:960410445 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,p ...
- C/S模型:TCP,UDP构建客户端和服务器端(BIO实现
Java中提供了socket编程来构建客户端和服务器端 TCP构建服务器端的步骤:(1)bind:绑定端口号(2)listen:监听客户端的连接请求(3)accept:返回和客户端连接的实例(4)re ...
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
查询SQLServer2005中某个数据库中的表结构.索引.视图.存储过程.触发器以及自定义函数 2013-03-11 09:05:06| 分类: SQL SERVER|举报|字号 订阅 ( ...
- 阿里云 Django部署参考
Linux下安装Python3和django并配置mysql作为django默认服务器 CentOS7.3安装Python3.6 yum except KeyboardInterrupt, e: 错误 ...
- 06网络通信udp-tcp、正则
一. udp网络程序 1. udp网络程序-发送数据 1)创建客户端套接字 2)发送/接收数据 3)关闭套接字 from socket import * # 1. 创建udp套接字 udp_so ...
- 洛谷——P1731 [NOI1999]生日蛋糕
P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...