使用gdbdebugging正在运行的守护进程

使用gdbdebugging正在运行的守护进程,第1张

概述使用gdbdebugging正在运行的守护进程

我正在开发一个作为守护程序运行的高stream量networkingC服务器应用程序。 在某些情况下,应用程序崩溃(始终没有核心)。 我如何用gdbdeBUGging正在运行的守护进程以find生成SIGSEGV的地方?

解释性说明:

我知道如何使用附加命令将gdb附加到正在运行的进程

附加到过程后,它停止。 如果我运行然后“继续”,如果程序没有崩溃,gdb仍然被阻塞。 如果我按CTRL-C,进程正在退出,我无法简单地分离gdb。

在linux中创build一个守护进程

发送消息到Python脚本

C守护进程 – 有没有一种方法可以实现?

在启动linux时守护perl脚本

使用PHP作为守护进程是明智的吗?

所以问题是:是否有办法继续进程没有gdb被卡住,但能够分离,如果进程没有崩溃?

在perl中收到任何信号时睡眠是否会中断?

如何在windows中开发一个服务器

跟守护进程交谈

如何用zdaemon创build多个脚本守护进程?

是否有可能在Java中双叉进程?

尝试异步模式和“ 继续 ”:

保存到非stop.gdb

set target-async on set pagination off set non-stop on

然后运行:

$ gdb -x non-top.gdb (gdb) !pgrep YOUR-DAEMON 1234 (gdb) attach 1234 (gdb) continue -a & (gdb)

这个页面attach / detach说detach命令可以在gdb里面工作。

如果要在应用程序中捕捉到分段错误,则必须从调试器运行应用程序。 然后当信号被捕获时,可以使用where或bt来查看应用程序的堆栈跟踪。 当然,在故障发生后你不能继续使用,应该怎么恢复? 如果您希望尽快触发故障,则可以附加到正在运行的进程并再次等待调试程序中的错误。

如果你想在发生故障后进行堆栈跟踪,那么你真的需要一个核心文件,因为没有任何进程需要附加。 现在,如果您的守护进程作为系统的一部分启动,则可能很难将配置转储到内核,而且您可能不希望其他应用程序在整个地方留下核心转储。 所以我建议停止系统守护进程并在用户空间中重新启动它,然后可以允许它转储核心。 如果它作为系统的一部分启动真的非常重要,那么请查看守护进程的启动是否限制在一个子shell中,并在该子shell中使用ulimit -c来设置适当的最大大小核心转储。

总结

以上是内存溢出为你收集整理的使用gdbdebugging正在运行的守护进程全部内容,希望文章能够帮你解决使用gdbdebugging正在运行的守护进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1211260.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存