当前位置: 首页 > news >正文

马尾网站建设网站关键词越多越好吗

马尾网站建设,网站关键词越多越好吗,织梦网站手机版怎么做,福州百度快照优化gdb调试python进程的前提条件 安装python及python调试信息安装gdb工具安装python-gdb.py扩展 安装过程 我们使用docker来安装以上内容,Dockerfile文件内容如下: FROM docker.io/centos:7.4.1708# 安装依赖 RUN yum install -y -q epel-release &…

gdb调试python进程的前提条件

  1. 安装python及python调试信息
  2. 安装gdb工具
  3. 安装python-gdb.py扩展

安装过程

我们使用docker来安装以上内容,Dockerfile文件内容如下:

FROM docker.io/centos:7.4.1708# 安装依赖
RUN yum install -y -q epel-release && \yum install -y -q gcc zlib zlib-devel libffi libffi-devel make openssl-devel openssl11 openssl11-devel# 下载python源码包并解压
RUN curl -fSL https://mirrors.huaweicloud.com/python/3.11.2/Python-3.11.2.tgz -o python.tgz && \tar -zxf python.tgz# 编译安装python(包含python调试信息)
RUN cd Python-3.11.2 && \export CPPFLAGS=-I/usr/include/openssl11 && export LDFLAGS=-L/usr/lib64/openssl11 && \./configure --prefix=/usr/python && \make -j "$(nproc)" python && \make install# 创建软链接,将python命令指向Python 3.11.2
RUN ln -sf /usr/python/bin/python3 /usr/bin/python  && \ln -sf /usr/python/bin/pip3 /usr/bin/pip && \sed -i '1s/^.*$/#!\/usr\/bin\/python2.7/' /usr/bin/yum  && \sed -i '1s/^.*$/#!\/usr\/bin\/python2.7/' /usr/libexec/urlgrabber-ext-down# 安装gdb工具
RUN yum install -y -q centos-release-scl && \yum install -y -q devtoolset-9-gdb && \ln -s /opt/rh/devtoolset-9/root/usr/bin/gdb /usr/bin/gdb# 进入gdb时自动执行python-gdb.py
RUN sed -i 's/, encoding="utf-8"//' /Python-3.11.2/python-gdb.py && \echo "source /Python-3.11.2/python-gdb.py" >> /root/.gdbinit

构建命令:

docker build -t python-gdb:1.0 .

测试

准备测试环境

# 运行容器
docker run --name python-gdb-test --cap-add sys_ptrace -itd python-gdb:1.0 
# 进入容器
docker exec -it python-gdb-test bash
# 写一个测试脚本script.py
echo "from time import sleep
while True:print('aa')sleep(1)" > script.py
# 后台运行
nohup python script.py > a.log 2>&1 &
# 查看进程号
ps -ef | grep pytho[n] | awk '{print $2}'

使用gdb调试python进程

[root@4d607f8672d7 /]# gdb
(gdb) attach 29
(gdb) py-bt
Traceback (most recent call first):File "//script.py", line 4, in <module>sleep(1)
(gdb) py-list1    from time import sleep2    while True:3        print('aa')>4        sleep(1)

到这里就测试成功了。

下面列一下gdb调试python进程的一些常用命令:

bt                       # 当前C调用栈
py-bt                    # 当前Python调用栈
py-bt-full               # 输出Python调用栈
py-up                    # 上一帧(py级别的帧)
py-down                  # 下一帧(py级别的帧)
py-list                  # 当前py代码位置
py-locals                # 输出locals变量
py-print <var>           # 输出指定变量
info thread              # 线程信息
thread <id>              # 切换到某个线程
thread apply all py-list # 查看所有线程的python代码位置
quit                     # 中断

踩坑记录

  1. 源码编译python时,make命令带有"LDFLAGS=-Wl,–strip-all"参数会删除调试信息,要保留调试信息的话不要带这个参数
  2. 直接使用yum install gdb安装的gdb工具版本过低,使用时会报错,需要从SCL源来安装更新版本的GDB
  3. gdb使用python2.7来执行python-gdb.py会报错,把python-gdb.py脚本中open(filename, ‘r’, encoding=“utf-8”)中的encoding参数去掉,就可以正常执行了
  4. docker容器默认情况不允许使用系统ptrace,会导致gdb使用报错,运行容器时增加–cap-add sys_ptrace参数来关闭ptrace限制

参考

使用 GDB 调试 C API 扩展和 CPython 内部代码 — Python 3.11.8 文档
Docker不能使用gdb调试的解决方案

http://www.yayakq.cn/news/878586/

相关文章:

  • 怎么利用源码做网站班级网站开发报告
  • 万创网站建设wordpress添加主题
  • 中山网站建设方案报价phpcms手机网站怎么做
  • 58同城烟台网站建设公司网站建站哪个系统好用
  • 四川网站建设博客wordpress 小说主题
  • 网站建设的目地网站的建设进度表
  • 大理网站设计wordpress实现分享
  • 自建网站该页无法显示微博内容放到wordpress
  • 百度网站怎么做友情链接网页就是一个网站的首页
  • 电商网站用什么做的购买的域名是永久的吗
  • 天律网站建设管理学精品课程网站
  • 公司网站策划宣传wordpress是什么系统
  • 西宁市建设局官方网站网站建设易网
  • 国内家居行业网站开发wordpress上传数据
  • 购物网站制作网站推广目标什么意思
  • 用ps做班级网站中国住房和城乡建设部网站一级建造师网
  • 南京做网站的网络公司排名用框架做网站如何居中
  • 网站开发流程抚州南京开发门户网站的公司
  • 织梦 一键更新后网站空白免费流量平台哪个最好
  • 如何做枪版电影网站深圳市空间设计有限公司
  • 静态网站系统小区物业管理系统
  • 泰州网站建设方案优化wordpress侧边栏加载过慢
  • 网站开发 flex布局网络营销公司起名
  • 网站开发后服务费开虚拟机很伤电脑吗
  • 凡客和凡客诚品一样吗做网站优化推广
  • 网站上职业学校排名 该怎么做wordpress显示目录
  • 建e室内设计网专业的室内设计常州网站seo代理加盟
  • 阿里云 有企业 网站吗wordpress 08影院主题
  • 红色大气宽屏企业网站源码 带后台中英文双语外贸企业网站源码网站制作创业
  • 邯郸哪家公司做企业网站比较专业手机网站建设与布局