今天领导推荐这个项目,中午看了一下,核心就是一个函数一条命令。最后精简为 gdb -p 9252 -batch -eval-command='call PyGILState_Ensure()' -eval-command='call PyRun_SimpleString("exec(open(\"/home/a0x55aa/code/toto/hello.py\").read())")' -eval-command='call PyGILState_Release($1)' 如果提示“ptrace: 不允许的操作.”执行命令:echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope就好了。 用到gdb和python gil相关知识,不怎么懂,感觉就是与正在运行的进程争抢python虚拟机,执行完文件里的代码,over。 正好在grep ps命令的时候,看到执行python manager.py runserver 的进程有两个(为啥两个读源码里读到)。然后我查了一下ps命令的stat字段都是什么意思。 D 不能中断的进程(通常为IO) R 正在运行中的进程 S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态 T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说sleep 10,如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态 W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配 X 已经死掉的进程(这个好像从来不会出现) Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。 下面一些是BSD风格的参数 < 高优先级进程 N 低优先级进程 L 在内存中被锁了内存分页 s 主进程 l 多线程进程 + 代表在前台运行的进程 以前也没用gdb调试过python程序,要学习一下。

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply