在没有附加调试器的情况下从PyCharm运行PyCharm时,Python代码的行为与使用pydev运行时的行为不同。在

我在PyCharm中运行一个POXSDN控制器和一个来自控制台的Mininet模拟,它连接POX打开的a监听套接字。在调试模式下运行时,当Mininet模拟连接到POX进程时,它将立即结束,而不会产生任何错误,而在运行模式下,它将继续按预期工作。输出如下:

运行:/usr/bin/python2.7 /home/wirate/pyretic/pyretic.py pyretic.sdx.main

Initialize SDX

SDX: {'_policy': drop, 'notify': None, 'arp_policy': [DynamicPolicy]

packets

FwdBucket}

Creating SDX environment from the config files

Adding Physical ports for A

Adding virtual ports for A

Adding Physical ports for C

Adding virtual ports for C

Adding Physical ports for B

Adding virtual ports for B

{u'A': {u'A': [1], u'C': [3], u'B': [2]}, u'C': {u'C': [3, 4]}, u'B': {u'B': [2]}}

{u'A': {u'A': [1], u'C': [3], u'B': [2]}, u'C': {u'A': [1], u'C': [3, 4], u'B': [2]}, u'B': {u'B': [2]}}

{u'A': {u'A': [1], u'C': [3], u'B': [2]}, u'C': {u'A': [1], u'C': [3, 4], u'B': [2]}, u'B': {u'A': [1], u'C': [3], u'B': [2]}}

Parsing participant's policies

Starting VNH Assignment

After new assignment

Virtual Next Hop --> IP Prefix: {'VNH1': set([u'110.0.0.0/24', u'100.0.0.0/24']), 'VNH2': set([u'140.0.0.0/24', u'150.0.0.0/24'])}

Virtual Next Hop --> Next Hop IP Address (Virtual): {'VNH1': '172.0.1.1', 'VNH2': '172.0.1.2', 'VNH': [IPAddress('172.0.1.0'), IPAddress('172.0.1.1'), IPAddress('172.0.1.2'), IPAddress('172.0.1.3'), IPAddress('172.0.1.4'), IPAddress('172.0.1.5'), IPAddress('172.0.1.6'), IPAddress('172.0.1.7'), IPAddress('172.0.1.8'), IPAddress('172.0.1.9'), IPAddress('172.0.1.10'), IPAddress('172.0.1.11'), IPAddress('172.0.1.12'), IPAddress('172.0.1.13'), IPAddress('172.0.1.14'), IPAddress('172.0.1.15')]}

Virtual Next Hop --> Next Hop Mac Address (Virtual) {'VNH1': aa:00:00:00:00:01, 'VNH2': aa:00:00:00:00:02, 'VNH': 'aa:00:00:00:00:00'}

Completed VNH Assignment

POX 0.2.0 (carp) / Copyright 2011-2013 James McCauley, et al.

Connected to pyretic frontend.

DEBUG:core:POX 0.2.0 (carp) going up...

DEBUG:core:Running on CPython (2.7.8/Oct 20 2014 15:05:19)

DEBUG:core:Platform is Linux-3.16.0-24-generic-x86_64-with-Ubuntu-14.10-utopic

INFO:core:POX 0.2.0 (carp) is up.

DEBUG:openflow.of_01:Listening on 0.0.0.0:6633

INFO:openflow.of_01:[00-00-00-00-00-01 1] connected

调试:

^{pr2}$

这是启动控制器的代码:def main():

global of_client

(op, options, args, kwargs_to_pass) = parseArgs()

if options.mode == 'i':

options.mode = 'interpreted'

elif options.mode == 'r0':

options.mode = 'reactive0'

elif options.mode == 'p0':

options.mode = 'proactive0'

elif options.mode == 'p1':

options.mode = 'proactive1'

try:

module_name = args[0]

except IndexError:

print 'Module must be specified'

print ''

op.print_usage()

sys.exit(1)

try:

module = import_module(module_name)

except ImportError, e:

print 'Must be a valid python module'

print 'e.g, full module name,'

print ' no .py suffix,'

print ' located on the system PYTHONPATH'

print ''

print 'Exception message for ImportError was:'

print e

sys.exit(1)

main = module.main

kwargs = { k : v for [k,v] in [ i.lstrip('--').split('=') for i in kwargs_to_pass ]}

sys.setrecursionlimit(1500) #INCREASE THIS IF "maximum recursion depth exceeded"

# Set up multiprocess logging.

verbosity_map = { 'low' : logging.WARNING,

'normal' : logging.INFO,

'high' : logging.DEBUG,

'please-make-it-stop' : logging.DEBUG }

logging_queue = Queue()

# Make a logging process.

def log_writer(queue, log_level):

formatter = logging.Formatter('%(levelname)s:%(name)s: %(message)s')

handler = logging.StreamHandler()

handler.setFormatter(formatter)

handler.setLevel(log_level)

logger = logging.getLogger()

logger.addHandler(handler)

logger.setLevel(log_level)

while(True):

try:

to_log = queue.get()

except keyboardInterrupt, e:

print "\nkilling log"

import sys

sys.exit(0)

logger.handle(to_log)

log_level = verbosity_map.get(options.verbosity, logging.DEBUG)

log_process = Process(target=log_writer,args=(logging_queue, log_level,))

log_process.daemon = True

log_process.start()

# Set default handler.

logger = logging.getLogger()

handler = util.QueueStreamHandler(logging_queue)

logger.addHandler(handler)

logger.setLevel(log_level)

runtime = Runtime(Backend(),main,kwargs,options.mode,options.verbosity)

if not options.frontend_only:

try:

output = subprocess.check_output('echo $PYTHONPATH',shell=True).strip()

except:

print 'Error: Unable to obtain PYTHONPATH'

sys.exit(1)

poxpath = None

for p in output.split(':'):

if re.match('.*pox/?$',p):

poxpath = os.path.abspath(p)

break

if poxpath is None:

print 'Error: pox not found in PYTHONPATH'

sys.exit(1)

pox_exec = os.path.join(poxpath,'pox.py')

python=sys.executable

# TODO(josh): pipe pox_client stdout to subprocess.PIPE or

# other log file descriptor if necessary

of_client = subprocess.Popen([python,

pox_exec,

'--verbose',

'of_client.pox_client' ],

stdout=sys.stdout,

stderr=subprocess.STDOUT)

signal.signal(signal.SIGINT, signal_handler)

signal.pause()

也许我应该补充一下,我以root用户身份运行PyCharm,因为启动控制器需要特权。在

python debug run 结果不同_Python:PyCharm中运行与调试模式下的不同行为相关推荐

  1. python scrapy爬虫遇见301_在Pycharm中运行Scrapy爬虫项目的基本操作

    目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...

  2. 用pycharm进行python爬虫的步骤_在Pycharm中运行Scrapy爬虫项目的基本操作

    目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...

  3. python的自带的ide运行_为什么同样的语句在python自带的ide和pycharm中运行的结果不一样?...

    好久没玩python了 首先 没记错的话应该是python在解释器中为了一些效率 将一些比较小的可能常用到数字已经在内存中分配好了 比如我的IDLE的范围是-5到256 这样, 每次有变量引用这些值的 ...

  4. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  5. Pycharm中运行Python代码的几种方式

    Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式: 一 ...

  6. 【童晶老师《Python游戏趣味编程》在PyCharm中编辑】

    童晶老师<Python游戏趣味编程>在PyCharm中编辑 不想再 海归编辑器 里编辑,想在PyCharm 中编辑要安装什么库 安装库三个库 安装完成,开始运行 不想再 海归编辑器 里编辑 ...

  7. python怎么打开交互式窗口-使用pycharm进行交互式shell调试

    在IDLE中执行脚本后使用Python对象非常方便.那么在PyCharm中,使用交互式python shell有什么方法可以使用脚本对象吗? 例如,我们有一个包含一个文件'test.py'的'test ...

  8. 关于pycharm中运行代码报错的解决思路

    关于pycharm中运行代码报错的解决思路 复盘一下对于代码运行报错的解决思路,以免忘了. 之前对于代码报错有种恐惧感,生怕出什么幺蛾子,但每次都会有很多bug,每改进一个bug又会出现下一个bug, ...

  9. win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)

    win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细) (一)前言 (二)准备工作 (三)友情提醒 (四)详细安装步骤 1.新建文件夹 2.下载OpenPo ...

最新文章

  1. Java 必须掌握的 20+ 种 Spring 常用注解
  2. 如何在三个月学习三年的生活经验
  3. 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践
  4. Hadoop 分布式集群搭建步骤
  5. Iptables防火墙配置
  6. Java Random nextInt()方法与示例
  7. 基于Echarts+HTML5可视化数据大屏展示—大数据智慧数据平台
  8. 遍历二叉树的非递归算法
  9. 1、win7 scala安装及idea中scala配置
  10. 【总结】防病毒网关---防毒墙
  11. 2020年最值得收藏的60个AI开源工具
  12. 原创 | 混沌工程(Chaos Engineering)初识
  13. EMQ X开源版使用
  14. 20145322何志威 Exp8 Web基础
  15. 抖音多闪数次声明被打脸 法院正式裁定抖音违规
  16. SIM7600CE TCP AT指令
  17. Docker(9) 安装Oracle18c
  18. 贪吃蛇二代 —— 穿墙版(C语言实现)
  19. 使用git拉取github上的项目
  20. PMBOK及PMP考试精要

热门文章

  1. hadoop 2.6 伪分布式的安装
  2. hive 操作(三)——hive 的数据模型
  3. windows操作系统的使用 —— 资源监视器
  4. C++::My Effective C++ (二)
  5. 仓储系统流程图_有效的仓储物流管理的6个重要提示
  6. python是什么 自学-这是大多数新手入门之后强烈推荐的python自学入门指南秘笈...
  7. 如何自学python知乎-怎么用最短时间高效的学习Python!知乎大佬给出了这样的答案!...
  8. 一张图学会python-一张图 python
  9. python经典程序实例-Python3经典100例(③)
  10. 自学python考哪些证书-【经验分享】想转行学python,过来人提醒大家几点