在这里,我们将给大家分享关于pycharmdebug如何使用-pycharm进行debug调试的教程的知识,让您更了解pycharm中debug调试的本质,同时也会涉及到如何更有效地openstack
在这里,我们将给大家分享关于pycharm debug如何使用-pycharm进行debug调试的教程的知识,让您更了解pycharm中debug调试的本质,同时也会涉及到如何更有效地openstack windows下远程debug调试(pycharm)、pycharm debug、PyCharm Debug 调试、Pycharm Debug 调试心得的内容。
本文目录一览:- pycharm debug如何使用-pycharm进行debug调试的教程(pycharm中debug调试)
- openstack windows下远程debug调试(pycharm)
- pycharm debug
- PyCharm Debug 调试
- Pycharm Debug 调试心得
pycharm debug如何使用-pycharm进行debug调试的教程(pycharm中debug调试)
pycharm中经常使用debug查找问题,有不少新手用户还不知道pycharm debug如何使用呢,话说不少用户都在咨询这个问题呢?下面就来小编这里看下pycharm进行debug调试的教程吧,需要的朋友可以参考下哦。
pycharm debug如何使用-pycharm进行debug调试的教程
首先打开pycharm软件,导入一个项目,如下图所示

接着打开一个python文件,在要debug的地方添加一个断点,如下图所示

然后点击顶部的Run菜单,选择Debug选项,如下图所示

接着程序运行到debug的地方就会自动停止,显示一个蓝色的条,如下图所示

然后在底部可以控制断点一步步的走,如下图所示

最后要终止断点点击左侧的按钮即可,如下图所示

以上就是pycharm进行debug调试的教程,希望大家喜欢哦。
openstack windows下远程debug调试(pycharm)
感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如有转载,请保留源作者博客信息。
如需交流,欢迎大家博客留言。

easy_install pycharm-debug.egg
|





4、将Waiting for connection...上面的两句代码copy到对应断点调试代码中:
import pydevd
pydevd.settrace(''192.168.1.133'', port=51234, stdoutToServer=True, stderrToServer=True)
接下来以nova的get_all实例为例调试:
vim /usr/lib/python2.6/site-packages/nova/compute/api.py
|

5、重启nova服务nova-api、nova-compute,执行:nova list命令,或者dashboard点击获取instance的页签:
远程debug连接到pycharm,进入了调试模式。
6、此处发现pycharm并没有进入到get_all 断点调试的代码处,而是进入了thread.py的线程文件,这是因为nova底层代码
使用的eventlet多线程(协程)导致,解决此问题参考如下:
grep -rn ''eventlet.monkey_patch'' /usr/lib/python2.6/site-packages/nova

vim /usr/lib/python2.6/site-packages/nova/cmd/__init__.py
将
import eventlet
from nova import debugger
if debugger.enabled():
# turn off thread patching to enable the remote debugger
eventlet.monkey_patch(os=False, thread=False)
else:
eventlet.monkey_patch(os=False)
替换为:
import eventlet
from nova import debugger
if debugger.enabled():
# turn off thread patching to enable the remote debugger
eventlet.monkey_patch(os=False, thread=False)
else:
eventlet.monkey_patch(os=False, thread=False)
安装之前步骤,重启服务nova-api、nova-compute,nova list 即可以看到正常的调试代码:
补充:pycharm可以将本机代码和远程代码进行映射(Edit Path Mapping),就不用每次去远程下载远程:
补充、如果还是不能正常调试,请将pycharm安装文件内容替换:
将:
SUPPORT_GEVENT = os.getenv(''GEVENT_SUPPORT'', ''False'') == ''True''
替换为:
SUPPORT_GEVENT = True
pycharm debug
debug相关功能怎么用
F8:step over 单步
遇到断点后,程序停止运行,按F8单步运行。
F7:step into 进入
配合F8使用。单步调试F8时,如果某行调用其他模块的函数,在此行F7,可以进入函数内部,如果是F8则不会进入函数内容,直接单步到下一行。
Alt+shift+F7:step into mycode,
个人理解F8和F7的综合。1、没遇到函数,和F8一样;2、遇到函数会自动进入函数内部,和F8时按F7类似的
shift+F8:跳出
调试过程中,F7进入函数内后,shift+F8跳出函数,会回到进入前调用函数的代码。不是函数地方shift+F8跳出,怎么用没太明白,但最终会执行到结束。
F9:resume program
按翻译是重启程序 ,实际是 下个断点,当打多个断点是,F9会到下一个断点
alt+F9:run to cursor
常用:
F8,F9,其次Alt+shift+F7,或 F7,shift+F8
PyCharm Debug 调试
一、实验环境
1.Windows7x64_SP1
2.anaconda2.5.0 + python2.7 (anaconda 集成,不需单独安装)
3.pyinstaller3.0
二、调试代码
get_config.py 代码如下
# -*- coding: utf-8 -*-
import os
from configparser import ConfigParser,NoSectionError
debug = False
def debug_print(str):
if debug:
print(str)
class GetConfig(ConfigParser):
def __init__(self,defaults=None):
"""
初始化函数
:param defaults:
"""
ConfigParser.__init__(self,defaults=None)
def optionxform(self, optionstr):
"""
解决ConfigParser将键值对强制转换为小写问题
:param optionstr:
:return:
"""
return optionstr
def open_file(self,file_name):
"""
打开config文件夹
:param file_name: config文件路径
:return:
"""
if os.path.exists(file_name):
debug_print(''%s exists'' %(file_name))
self.read(file_name)
return True
else:
debug_print(''%s do not exists'' % (file_name))
return False
def get_sections(self):
"""
获取config中所有section
:return: section列表
"""
section = self.sections()
debug_print(section)
return section
def check_section(self,*args,**kwargs):
def check_section_type(*args,**kwargs):
if isinstance(args[0], str):
print(''The first parameter (section) must be a string'')
return
return check_section_type
@check_section
def get_options(self,section):
"""
返回section中所有option
:param section: 指定section
:return: option列表
"""
try:
options_list = self.options(section)
return options_list
except NoSectionError as e:
debug_print(e)
return
@check_section
def get_dicts(self,section):
"""
返回section中键值对
:param section: 指定section
:return: 键值对
"""
try:
list_str = self.items(section)
dict_str = dict(list_str)
return dict_str
except NoSectionError as e:
debug_print(e)
return
@check_section
def get_options_match_str(self,section,match_str):
"""
使用指定字符串匹配option列表
:param section: 指定section
:param match_str: 需要匹配的字符串
:return: 匹配列表
"""
options_list = self.get_options(section)
match_list = []
for each in options_list:
if match_str in each:
match_list.append(each)
return match_list
@check_section
def get_para(self,section,key):
"""
使用section和key索引value
:param section: 指定section
:param key: 指定key
:return: 索引值
"""
dicts = self.get_dicts(section)
if dicts:
result = dicts.get(key,None)
return result
else:
return
if __name__ == ''__main__'':
debug = True
config = GetConfig()
config.open_file(''g:\gejunping\extract_bin\Tool\config_block.cfg'')
sections = config.get_sections()
ret = config.get_para(''AM620'',''AM620_128G'')
print(ret)
options = config.get_options(''AM620'')
print(options)
match_list = config.get_options_match_str(''AM620'',''PREFIX'')
print(match_list)
for each_match in match_list:
print(config.get_para(''AM620'',each_match))
dicts = config.get_dicts(''AM620'')
print(dicts)
config_block.cfg 内容如下
[AM620]
AM620_128G = 16000
AM620_256G = 16000
AM620_512G = 16000
AM620_1TB = 16000
[AH640]
AH640_128G = 16000
AH640_256G = 16000
AH640_512G = 16000
AH640_1T = 16000
三、实验步骤
1、设置断点、取消断点
- 行号之后、左侧边界之前单击,设置断点
- 行号之后、左侧边界之前再次单击,取消断点
2、进入调试界面
- 代码区域内,右击鼠标,选择其中的 Debug ‘xx.py’文件
- 使用快捷键 Alt + shift + F9,选择需要 debug 的脚本
3、从断点处单步执行 F8
- Debug 运行后,调试器停止在第一个断点处,每按一次 F8,程序单步执行一次。
- pycharm 在代码后自动添加变量值,如下图黄色框框,格式为:变量名:变量类型:变量值
4、进入函数内部 F7
- 多次按 F8,调试器运行至 ret = config.get_para () 函数,如下图黄色框框
- 此时按 F7,调试器将进入 get_para 函数,调试器会打印调用该函数的参数值,如下图黄色框框
5、只在断点处执行 F9
程序中设置三处断点,调试器运行后停留在第一个断点处,按一次 F9 跳至第二个断点,再按一次 F9 跳至第三个断点。
综上所述,pycharm 调试功能及其强大,可以抛弃在程序中不停添加 print 语句的做法!
Pycharm Debug 调试心得
1-1. 添加断点:直接在标记处点击鼠标左键即可。(删除断点只需再点击断点处即可)
1-2.Debug 下运行代码:如图所示
1-3. 按照所需调试进行代码调试。Debug 的调试方式如下所示
分别为:
1.show execution point (F10) 显示当前所有断点
2.step over (F8) 单步调试。
若函数 A 内存在子函数 a 时,不会进入子函数 a 内执行单步调试,而是把子函数 a 当作一个整体,一步执行。
(代码调试顺序可参考下图。)
3.step into (F7) 单步调试。
若函数 A 内存在子函数 a 时,会进入子函数 a 内执行单步调试。
(代码调试顺序可参考下图。)
4.step into my code (Alt + Shift +F7) 执行下一行但忽略 libraries(导入库的语句)(目前感觉没什么用)
5.force step into (Alt + Shift +F7) 执行下一行忽略 lib 和构造对象等 (目前感觉没什么用)
6.step out(Shift+F8)当目前执行在子函数 a 中时,选择该调试操作可以直接跳出子函数 a,而不用继续执行子函数 a 中的剩余代码。并返回上一层函数。
7.run to cursor (Alt +F9) 直接跳到下一个断点
关于pycharm debug如何使用-pycharm进行debug调试的教程和pycharm中debug调试的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于openstack windows下远程debug调试(pycharm)、pycharm debug、PyCharm Debug 调试、Pycharm Debug 调试心得等相关知识的信息别忘了在本站进行查找喔。
本文标签: