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

最新文章

  1. Leetcode-83 Remove Duplicates from Sorted List
  2. Javascript 面向对象编程初探(一)--- 封装
  3. Magento模板Paypal付款不成功返回清空购物车产品【解决方案】
  4. 【Todo】InnoDB、MyISAM、数据库引擎
  5. AngularJS(9)-表单
  6. PHP微信公众平台开发1 配置接口
  7. 小爬虫。爬取网站多页的通知标题并存取在txt文档里。
  8. hiho#1128 : 二分·二分查找
  9. @synthesize和@dynamic
  10. Spark入门实战
  11. Ping pong(树状数组求序列中比某个位置上的数小的数字个数)
  12. Stars(树状数组)
  13. 【java集合框架源码剖析系列】java源码剖析之HashSet
  14. netty的编解码器理解(转)
  15. PID实战-STM32电机PWM力矩调节系统
  16. AddTransient,AddScope和AddSingleton 有什么不同?
  17. 20155228 实验一《Java开发环境的熟悉》实验报告
  18. P3041 [USACO12JAN]视频游戏的连击Video Game Combos
  19. 1073 Scientific Notation (20 分)
  20. BZOJ2007 [Noi2010]海拔 【平面图最小割转对偶图最短路】

热门文章

  1. patest_1003_Emergency (25)_(dijkstra+dfs)
  2. Dynamic type checking and runtime type information
  3. Android APK生成证书并签名方法
  4. 从Excel读取数据,然后分析相似的数据,多线程处理(多线程比较相似的字符串,统计出相似的数量及字符串)
  5. JavaSE-21 字符编码简介
  6. 获取url上的参数
  7. Python学习-列表的其它主要操作
  8. 基础知识:if条件、while循环、for循环 相关练习
  9. 理解ZAB协议
  10. Matlab学习笔记(一)