python debug run 结果不同_Python:PyCharm中运行与调试模式下的不同行为
在没有附加调试器的情况下从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中运行与调试模式下的不同行为相关推荐
- python scrapy爬虫遇见301_在Pycharm中运行Scrapy爬虫项目的基本操作
目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...
- 用pycharm进行python爬虫的步骤_在Pycharm中运行Scrapy爬虫项目的基本操作
目标在Win7上建立一个Scrapy爬虫项目,以及对其进行基本操作.运行环境:电脑上已经安装了python(环境变量path已经设置好), 以及scrapy模块,IDE为Pycharm .操作如下: ...
- python的自带的ide运行_为什么同样的语句在python自带的ide和pycharm中运行的结果不一样?...
好久没玩python了 首先 没记错的话应该是python在解释器中为了一些效率 将一些比较小的可能常用到数字已经在内存中分配好了 比如我的IDLE的范围是-5到256 这样, 每次有变量引用这些值的 ...
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )
文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...
- Pycharm中运行Python代码的几种方式
Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式: 一 ...
- 【童晶老师《Python游戏趣味编程》在PyCharm中编辑】
童晶老师<Python游戏趣味编程>在PyCharm中编辑 不想再 海归编辑器 里编辑,想在PyCharm 中编辑要安装什么库 安装库三个库 安装完成,开始运行 不想再 海归编辑器 里编辑 ...
- python怎么打开交互式窗口-使用pycharm进行交互式shell调试
在IDLE中执行脚本后使用Python对象非常方便.那么在PyCharm中,使用交互式python shell有什么方法可以使用脚本对象吗? 例如,我们有一个包含一个文件'test.py'的'test ...
- 关于pycharm中运行代码报错的解决思路
关于pycharm中运行代码报错的解决思路 复盘一下对于代码运行报错的解决思路,以免忘了. 之前对于代码报错有种恐惧感,生怕出什么幺蛾子,但每次都会有很多bug,每改进一个bug又会出现下一个bug, ...
- win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细)
win10环境下下载安装openpose(only cpu)并在pycharm中运行代码(超详细) (一)前言 (二)准备工作 (三)友情提醒 (四)详细安装步骤 1.新建文件夹 2.下载OpenPo ...
最新文章
- Java 必须掌握的 20+ 种 Spring 常用注解
- 如何在三个月学习三年的生活经验
- 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践
- Hadoop 分布式集群搭建步骤
- Iptables防火墙配置
- Java Random nextInt()方法与示例
- 基于Echarts+HTML5可视化数据大屏展示—大数据智慧数据平台
- 遍历二叉树的非递归算法
- 1、win7 scala安装及idea中scala配置
- 【总结】防病毒网关---防毒墙
- 2020年最值得收藏的60个AI开源工具
- 原创 | 混沌工程(Chaos Engineering)初识
- EMQ X开源版使用
- 20145322何志威 Exp8 Web基础
- 抖音多闪数次声明被打脸 法院正式裁定抖音违规
- SIM7600CE TCP AT指令
- Docker(9) 安装Oracle18c
- 贪吃蛇二代 —— 穿墙版(C语言实现)
- 使用git拉取github上的项目
- PMBOK及PMP考试精要
热门文章
- hadoop 2.6 伪分布式的安装
- hive 操作(三)——hive 的数据模型
- windows操作系统的使用 —— 资源监视器
- C++::My Effective C++ (二)
- 仓储系统流程图_有效的仓储物流管理的6个重要提示
- python是什么 自学-这是大多数新手入门之后强烈推荐的python自学入门指南秘笈...
- 如何自学python知乎-怎么用最短时间高效的学习Python!知乎大佬给出了这样的答案!...
- 一张图学会python-一张图 python
- python经典程序实例-Python3经典100例(③)
- 自学python考哪些证书-【经验分享】想转行学python,过来人提醒大家几点