
我正在开发一个作为守护程序运行的高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正在运行的守护进程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)