博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gdb调试python
阅读量:7079 次
发布时间:2019-06-28

本文共 1387 字,大约阅读时间需要 4 分钟。

一、概述

  1. 确认你的gdb版本是>=7,gdb从版本7开始支持对Python的debug

  2.确认gdb连接的Python是所要debug的Python,否则请重新编译gdb。

1 $ gdb2 (gdb) python3 > import sys4 >print sys.version5 >end6 2.4.3 ( #1, Sep 21 2011, 19:55:41) 7 [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)]

  编译时注意,要把自己编译的Python路径加到PATH环境变量里,这样gdb configure的时候才会找到新版Python并连接

   3.下载

三、开始debug

  1、假设要debug的进程号为1000

     $gdb  -p 1000     #使用此命令即可使gdb附加到进程

  2、载入libpython脚本

    如果gdb是redhat或fedora等厂商修改过的,会有--python选项,使用此选项即可指定gdb启动时载入的Python扩展脚本(此脚本是扩展gdb的,不是我们需要debug的脚本)

    $ gdb --python /path/to/libpython .py -p 1000

    如果安装的是GNU的gdb,就需要打开gdb后手动载入libpython.py脚本  

    (gdb) python

    > import sys  
    >sys.path.insert(0, '/path/to/libpython.py' )  
    > import libpython
    >end
    (gdb)

  这时就可以使用py-bt命令打印当前线程的Python traceback了 

  3、libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。

  一点经验

  • 在gdb可以使用generate-core-file命令生成一个coredump文件。之后可以用gdb –core来打开coredump文件进行debug。避免一直attach住进程,可以快速重启恢复服务
  • 是gdb的一个扩展。可以打印Python的内存使用情况

 

转载于:https://www.cnblogs.com/chris-cp/p/6007100.html

你可能感兴趣的文章
(转)c#实现WinRAR解压缩
查看>>
MIME
查看>>
NetworkInterface的使用
查看>>
在IIS上启用Gzip压缩(HTTP压缩)
查看>>
解决ImportError: cannot import name webdriver
查看>>
如何将Windows Server 2012的Evaluation版本转为正式版?
查看>>
[iOS] UITextField隐藏软键盘心得(隐藏自身软键盘、点击Return自动转到下个文本框、轻触背景隐藏软键盘)...
查看>>
hdu 1853(Cyclic Tour)
查看>>
静态编译mysql库到程序中遇到的问题
查看>>
JavaScript Event Loop 浅析
查看>>
在独立的javascript文件中获取当前项目的http路径
查看>>
Yaf(Yet Another Framework)用户手册
查看>>
http://daffodil.codeplex.com/
查看>>
反码符号-128有8位二进制表示的原码、反码和补码
查看>>
编程输出完美之星编程大赛 复赛第二场 24点
查看>>
最大连续子序列
查看>>
iPhone loadView 和 viewDidLoad的区别
查看>>
Netfilter/iptables的一些新进展
查看>>
程序员的人生规划
查看>>
PHP中抽象类与接口的应用场景
查看>>