我正在寻找一种对 Linux 上正在运行的进程进行非侵入式核心转储的方法。
我熟悉 gdb 的gcore,但它只能在gdb附加到进程时运行并且它停止调试。对于一个大的核心转储,这可能意味着多秒甚至几分钟的中断执行。
有没有非阻塞的替代方案?
Linux 支持写时复制内存,它依赖于在fork()没有exec(). 所以我在考虑一些内核级别的事情,其中内核获取正在转储的进程的进程页表的写时复制快照,然后在原始进程继续运行的同时写出核心。
我很确定我可以使用gdb强制fork()然后转储孩子,而父母愉快地继续,然后wait()在父母终止后收割孩子。但是,它很混乱,并且仍然需要两次中断父进程,尽管很短。
以前肯定有人需要这个吗?
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |