当前位置:  编程语言>python

如何使用linux下gdb来调试python程序

 
    发布时间:2014-7-11  


    本文导语:  使用linux下gdb来调试python程序前提条件:1)确保gdb版本>=7.02)安装python-debuginfo包。如:python-debuginfo-2.6.6-29.el6_2.2.x86_64.rpm,这个版本号一定要跟你所用的python版本一致(可以rpm -qa|grep python查看你安装的python的详细版本号)。Centos...

使用linuxgdb调试python程序前提条件:

1)确保gdb操作系统 iis7站长之家>=7.0

2)安装python-debuginfo包。

如:python-debuginfo-2.6.6-29.el6_2.2.x86_64.rpm,这个版本号一定要跟你所用的python版本一致(可以rpm -qa|grep python查看你安装的python的详细版本号)。

Centos下找包地址为:http://debuginfo.centos.org/6/x86_64/。

3)就可以运行命令

  #gdb python pid

 进行调试。


linux下gdb如何调试python程序

(1)假设要debug进程号为1000,运行如下命令:

$ gdb -p 1000

使用此命令即可使gdb附加到进程。

(2)载入libpython脚本

如果你的gdb是redhatfedora等厂商修改过的,会有--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了。libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。


直接通过GDB进行调试python程序对应的c语言程序的方法

   使用gdb attach到python程序上,然后在堆栈中找到PyFrameObject对象, 从而定位到出问题的python函数

   调用堆栈相应的函数名,文件名和行号获取方法如下:

函数名: *(char*)&(((PyStringObject*)f->f_code->co_name)->ob_sval)

文件名: *(char*)&(((PyStringObject*)f->f_code->co_filename)->ob_sval)

行号: f->f_code->firstlineno


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:如何使用linux下gdb来调试python程序
相关文章推荐:
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 新装的Linux使用root用户不能使用FTP?
  • mongodb介绍及使用场景
  • LINUX下使用Eclipse,如何使用交叉编译器?
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • redhat9内存使用率高达73%,怎么查看内存具体使用情况
  • c/c++预处理命令预#,##使用介绍
  • 嵌入式Linux使用外挂Vsftpd不能正常使用, 请高手解答,谢谢。
  • 在div中使用css让文字底部对齐的方法
  • 有谁在windows下使用过libxls库啊。求教如何使用啊


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3