python可以做自动化项目吗_如何自动化大型项目的启动/调试?

场景:

有一个复杂的软件,手工启动很烦人。我所做的是创建一个python脚本来启动可执行文件并附加gdb进行调试。在

进程启动脚本:确保设置了环境变量。在

确保将本地生成目录添加到环境的LD_LIBRARY_PATH变量中。在

将当前工作目录更改为可执行文件的预期位置(不是我的设计)

使用配置文件启动可执行文件(唯一的命令行选项)

将输出从可执行文件传送到第二个日志记录进程

记住可执行文件的PID,然后启动并将gdb附加到正在运行的可执行文件。在

剧本是可行的,但有一点需要注意。ctrl-c不会中断被调试对象并将控制权返回给gdb。因此,如果我在没有活动断点的情况下“继续”进程,那么它必须从另一个shell终止/中断。顺便说一句,运行“kill-s SIGINT<pid>”,其中<pid>是调试对象的pid,确实可以让我回到gdb的提示。。。但不得不这样做真的很烦人

一开始我以为Python正在获取SIGINT信号,但事实似乎并非如此,因为我设置了信号处理程序,将信号转发给被调试器,这并不能解决问题。在

我尝试了对python脚本的各种配置(调用操作系统生成*似乎不管我怎么做,如果python启动了子进程,SIGINT(ctrl-c)信号不会被路由到gdb或子进程。在

当前思路这可能与需要

为被调试者和gdb单独的进程组id…对此有信心吗?在

SELinux可能存在错误?在

信息:gdb 6.8版

Python2.5.2(Python2.6.1也存在问题)

SELinux环境(向进程传递信号的错误?)在

我考虑过的备选方案:设置一个.gdbinit文件来完成脚本所做的工作、环境变量和当前工作目录是这种方法的一个问题。在

启动可执行文件并手动附加gdb(恶心)

问题:

如何自动化大型项目的启动/调试?在

更新:

我试过尼古拉斯·莱利下面的例子,在我家的Macintosh上,它们都允许cntl-c以不同的程度工作,在生产boxen(我现在相信它可能运行SELinux)上,它们不。。。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值