Force a core to dump from an active, normally running program on FreeBSD

你。 提交于 2019-12-04 15:15:14

问题


I'm writing error handling code for a server on FreeBSD. For extremely serious errors I want to avoid data corruption by immediately terminating. That's easy, exit(3). Before I exit, I output my relevant variables that led me there. However, ideally, this termination would be accompanied by a .core so that I could fully investigate what got me to this catastrophic (and likely hard to reproduce) state.

How can I force this to happen?


回答1:


kill -QUIT process_id will cause a core dump from a running process (assuming that resource limits allow it).

Or see man 3 abort for causing a program to dump itself.

Added: From an interactive shell, a running program can be made to abort with the quit key, usually Ctrl+\, which sends a SIGQUIT just as the more common Ctrl+C sends a SIGINT. This is identical to the kill -QUIT… it's just easier to type if you are on the controlling terminal. See man 1 stty if your default quit key is different.




回答2:


This helped me! kill -11 always works for me. 11 is SIGSEGV (invalid memory reference)




回答3:


You might also want to take a look at gcore(1) (http://man.freebsd.org/gcore).




回答4:


On sles12.. Below code worked for me :

kill -11

The previous suggestions did not do anything.



来源:https://stackoverflow.com/questions/6561194/force-a-core-to-dump-from-an-active-normally-running-program-on-freebsd

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!