python源码编译debug版本并使用GDB调试

一 背景:

使用python执行脚本时,有些时候需要对python不同版本的某些函数实现方法做对比,为了更好的看到python的堆栈信息,我们需要编译对应的debug版本。

二 环境准备

一台ubuntu 18.04版本的linux机器,安装make、gcc、libffi、zlib(必须)等工具和库

sudo apt-get install build-essential zlib1g-dev libncurses5-dev libgdbm-dev \  
libnss3-dev libssl-dev libreadline-dev libsqlite3-dev wget curl llvm \  
libffi-dev liblzma-dev python3-openssl git

三 编译

wget https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz # 下载3.11.4版本的源码
tar xvf Python-3.11.4.tar.xz # 解压
cd Python-3.11.4
# --prefix=/path/to/install:指定 Python 的安装目录,请将 /path/to/install 替换为你希望的实际路径。
# --with-pydebug:启用 debug 模式,这会在 Python 中添加额外的调试支持。
# --enable-optimizations=0:禁用优化,以确保代码尽可能接近源代码,便于调试。
./configure --prefix=/path/to/install --with-pydebug --enable-optimizations=0
make -j 3
make install

四 debug调试

4.1 准备一个python脚本

import threading
import time

def my_function():  
    print("Function is running")  

print("start debug")
t = threading.Timer(2, my_function)
t.start()
print("stop debug")

4.2 设置环境变量

export LD_LIBRARY_PATH=/path/to/install/lib:$LD_LIBRARY_PATH

4.3 使用gdb开始调试并查看堆栈信息

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值