gee*_*aur 16
通常的技巧是让某些东西(可能是类似 的信号SIGUSR1
)触发程序到fork()
,然后子进程调用abort()
使自己转储核心。
from os import fork, abort
(...)
def onUSR1(sig, frame):
if os.fork == 0:
os.abort
Run Code Online (Sandbox Code Playgroud)
并在初始化期间
from signal import signal, SIGUSR1
from wherever import onUSR1
(...)
signal.signal(signal.SIGUSR1, wherever.onUSR1)
Run Code Online (Sandbox Code Playgroud)
以这种方式使用,fork
不会消耗太多额外的内存,因为几乎所有的地址空间都将被共享(这也是生成核心转储的原因)。
曾几何时,这个技巧被用于undump
从核心转储生成可执行文件以在复杂初始化后保存图像的程序。emacs
过去常常这样做以从temacs
.
归档时间: |
|
查看次数: |
9723 次 |
最近记录: |