python gdb调试_使用GDB调试Python程序

最近在为一个监控系统开发agent,需要支持Linux、FreeBSD及Windows等操作系统。复杂的线上环境,带来了一系列诡异的问题,尽管代码上线前在为数不少的测试机器验证过。

coredump文件怎么办?很多人都会想到gdb加载coredump文件,然后查看信号及堆栈信息,以此分析原因。堆栈信息在调试中非常有用,但是别忘了,你写的是Python代码,但是gdb给你的是C堆栈信息!似乎没啥鸟用!难道要撸Python源码然后分析各种核心数据结构吗?有什么方式可以查看到Python堆栈信息吗?

还遇到过另一个问题,一个Python进程突然间陷入死循环,所有其他线程都调度不到。遇到这种情况,首先可能需要知道死循环到底在干什么。如何获悉呢?可能用strace跟一下系统调用可以看出一点端倪。但是一个堆栈信息更为具体更有说服力,就算是只有C堆栈信息有时也是足以说明问题的。

gdb就可以解决以上难题(其实远不止),接下来,我们一起看看具体要怎么操作吧~

准备

首先得有gdb吧,这个就不细说了,debian系发行版上运行以下命令完成安装:

apt-get install gdb

其次,还需要装一个包——python-dbg。这个包有什么作用呢?前面不是抱怨过C堆栈对于调试一个Python有何用?我们更需要的是Python堆栈信息,python-dbg就是为了完成这个使命。

运行

全新启动一个Python程序并进行调试,可以采用交互式方式,先启动gdb然后在gdb shell中启动Python程序:

$ gdb pytho

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值