• 远程调试openstack


          之前一直没有找到方法调试openstack的horizon代码,现在终于找到方法了,特别感谢下面这篇博客,讲解非常清晰:

    http://blog.csdn.net/tantexian/article/details/38295599  但是其中有一个问题就是需要在源程序代码中添加代码以供调试用,这样调试完了还要去删除这些代码,十分不方便。所以我就想在此基础上做些改进,具体情况如下:

    Komodo下载地址:http://pan.baidu.com/s/13i5Zk

    PythonRemoteDebuggingClient下载地址:http://code.activestate.com/komodo/remotedebugging/

    一、本地安装配置Komodo

    1、Edit->Preferences:配置python解释器。

    2、Debug-> Listen for debuging connections:确保勾选上,这样才能远程调试。

    3、Debug->Listener Status:查看配置的远程连接端口。(Edit-> Preferences->Debugger->Connection:可以自定义远程连接端口)

    二、远程服务器配置

    解压PythonRemoteDebuggingClient并进入该目录!

    cd pythonlib/dbgp

     1.

    cp client.py client.py.bak
    vim client.py

    在头部添加:

    import stat

    在brk函数处进行修改: 

    def brk(file=None,host = '10.10.24.96', port = 9000, idekey = '',
            preloadScript = None, logLevel = logging.WARN):
        filepath=os.path.abspath(file)
        tmp_file='/tmp/brk_file'
        if not os.path.exists(tmp_file):
            with open(tmp_file,'a') as f:
              f.write(filepath)
              f.write('
    ')
            os.chmod(tmp_file,os.stat(tmp_file).st_mode|stat.S_IWGRP|stat.S_IWOTH)
        else:
            with open(tmp_file,'a') as f:
              f.write(filepath)
              f.write('
    ')

     说明:这里设置/tmp/brk_file为临时记录文件,记录那些添加了断点设置代码的文件路径信息。10.10.24.96为Komodo所在的机器IP地址,非调试的代码所在地址。9000为调试设置的端口。

     2.

    cp __init__.py __init__.py.bak
    vim __init__.py 

    在头部添加:

    from dbgp.client import brk

      3.

    cp -r pythonlib/dbgp /usr/lib/python2.6/site-packages/
    cp pydbgp /usr/bin/
    chmod a+x /usr/bin/pydbgp

    三、设置删除断点程序

    1.

    vim brk-clean

    添加如下内容:

    #!/usr/bin/python
    import subprocess
    import os
    import sys
    
    def delete_brk(file):
        cmd="sed -i "+r"'/import dbgp/d' "+file+";"
        cmd=cmd+"sed -i "+r"'/dbgp.brk(__file__)/d' "+file
        proc=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        out,err=proc.communicate()
        if proc.returncode:
            raise RuntimeError('Failed:
    %s' % err)
    
    
    def main():
    
        result=True
        #if tmp file not exist or is not a file
        if not os.path.exists('/tmp/brk_file') or not os.path.isfile('/tmp/brk_file'):
            print "/tmp/brk_file doesn't exist!
    Check if it has been deleted Or you didn't set any breakpoint !"
            result=False
            return result
    
        #find files with brk
        file_list=[]
        with open('/tmp/brk_file','r') as f:
            file_list=f.readlines()
            try:
                os.remove('/tmp/brk_file')
            except:
                print r"Error:Can't delete /tmp/brk_file!"
                result=False
    
    
        for file in file_list:
            file=file.rstrip('
    ')
            if os.path.exists(file) and os.path.isfile(file):
                delete_brk(file)
                print 'Deleted brk in file: '+file+r"!"
            else:
                print 'Error:'+file+r"doesn't exist or isn't a file"
                result=False
    
        return result
    
        
    if __name__=='__main__':
        #delete the brk in a file
        if len(sys.argv)>1:
            file=sys.argv[1]
            if not os.path.exists(file) or not os.path.isfile(file):
                print file+r" doesn't exist!"
                sys.exit()
            delete_brk(file)
            print "Breakpoints in "+file+" have been cleaned up !"
            sys.exit()
            
        result=main()
        if result:
            print 'Brk-Clean Completed !'

     2.

    mv brk-clean /usr/bin
    chmod a+x /usr/bin/brk-clean

    四、在需要设置断点的地方插入断点设置代码

    import dbgp
    dbgp.brk(__file__)

     

    五、运行需要调试的程序或重启相关服务

       这里提供一个启动openstack服务的脚本,非本人所写 ,不过用起来也不错,参考链接:https://github.com/liuan/openstack-x

    六、调试完后记得删除断点设置代码

    brk-clean

     

    七、如果有必要,须重启相关服务

  • 相关阅读:
    Zju1876 Edit Step Ladders
    Candy糖果盒
    哈希
    最长上升子序列 nlogn
    电费结算
    【luoguP5656】二元一次不定方程(gcd,exgcd,裴蜀定理,不定方程初步)
    DP技巧
    高精
    【CSP烤前注意】
    [Jsoi2015] 种花
  • 原文地址:https://www.cnblogs.com/littlebugfish/p/3991390.html
Copyright © 2020-2023  润新知