ubuntu的python调试器_在Ubuntu下编译调试版的Python

本文介绍了在Ubuntu系统中如何获取Python源码并编译调试版本。通过`apt-get source python2.7`获取源码,然后使用`make OPT=-g`编译,但发现单步调试时存在优化问题。解决办法是执行`make clean`后,用`make -j4 OPT=-g CFLAGS=-g`重新编译,避免代码优化,确保调试的准确性。
摘要由CSDN通过智能技术生成

在Windows调试Python解释器还是非常方便的,因为有强大的VS。

不过在Linux下可能有点不那么顺畅。但是稍微设置一下还是可以很方便地调试的。我们来看看在Ubuntu下怎么做。

获取源码

在Ubuntu下获取Python2.7的源码非常方便,只需要使用apt-get就可以轻松取得。在Shell下输入

apt-get source python2.7

即可以将Python的源码下载到当前目录。

然后我们就可以得到一个tar.gz的压缩包。

编译

我们进入源码文件夹后输入

1

2./configure

make

然后就可以编译得到python。

当然,此时的Python不是调试版的,如果要编译调试版的Python,就需要再做一些东西。首先我们可以Google一下怎么做,貌似很多都是引用了源码README的一段话:

command; e.g. “make OPT=-g” will build a debugging version of Python

on most platforms. The default is OPT=-O; a value for OPT in the

environment when the configure script is run overrides this default

(likewise for CC; and the initial value for LIBS is used as the base

set of libraries to link with).

好,我们现在使用

make OPT=-g

试试,嗯,确实用gdb可以调试了,不过单步的时候会在源码那里会一下在上一下在下地跳来跳去。而且查看变量值的时候很多变量显示的是。原因是编译的时候优化了。那优化选项什么时候被加进去了?

我们来看看configure生成的Makefile中的一段。

1

2

3

4

5

6

7

8# Compiler options

OPT= -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes

BASECFLAGS= -fno-strict-aliasing

CFLAGS= $(BASECFLAGS) -g -O2 $(OPT) $(EXTRA_CFLAGS)

# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to

# be able to build extension modules using the directories specified in the

# environment variables

CPPFLAGS= -I. -IInclude -I$(srcdir)/Include

可以看到OPT的-O3已经被我们的OPT=-g参数覆盖掉了,不过还有一个-O2在CFLAGS那里。呃,原来源码的README还是不可靠的啊。

我们现在来重新编译:

console1

2make clean

make -j4 OPT=-g CFLAGS=-g

这样编译的时候gcc就不会优化代码了。我们单步的时候就不会跳来跳去,变量的值也不会出现。

另外“-j4”选项是指开4个gcc编译,我是2核处理器,所以开4个gcc编译会快些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值