Linux 服务崩溃

标签 linux crash gdb core

我有一个 linux 服务(c++,有很多可加载模块,基本上是在运行时获取的 .so 文件),它时不时会崩溃……我想深入了解这次崩溃并进行调查,但是在此刻我不知道如何进行。所以,我想问你以下问题:

  1. 如果 linux 服务崩溃,“核心”文件在哪里创建?我已经设置了 ulimit -c 102400,这应该足够了,但是我无法在任何地方找到核心文件:(。
  2. 是否有任何跟踪服务的 Linux 日志?服务自己的日志显然没有告诉我我现在要崩溃了......
  3. 可能是其中一个模块崩溃了……但我不知道是哪一个。我什至不知道加载了哪些模块。您知道如何在 Linux 中显示服务正在使用哪些模块吗?
  4. 在调试 Linux 服务时您可能有任何其他提示?

谢谢 f-

最佳答案

在 Linux 下,出于安全原因,切换用户 ID 的进程会禁用其核心文件。这是因为他们经常做一些事情,比如读取特权文件(想想/etc/shadow)和核心文件可能包含敏感信息。

要在已切换用户 ID 的进程上启用核心转储,您可以将 prctl 与 PR_SET_DUMPABLE 结合使用。

核心文件通常转储到当前工作目录中——如果当前用户不可写,那么它将失败。确保进程的当前工作目录是可写的。

关于Linux 服务崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7807227/

相关文章:

delphi - 为什么有时需要重新启动 Delphi 7 才能使调试器工作

c++ - 启动时调试应用程序

multithreading - 逆向多线程错误

assembly - 汇编程序 - 跳过指令

c++ - Eclipse C++ 调试器不显示变量值

linux - MT4/Wine/Ubuntu 不允许 FileOpen

c - Linux Evdev 投票滞后

vba - 由于缺少引用xlam,Excel崩溃

linux - epoll_wait 阻塞时间超过超时

.net - 是否可以使用 Azure Web 应用程序服务来托管 .NET Core Web 应用程序以及 Wordpress 平台?