【问题标题】:Attaching GDB to a dying process in linux将 GDB 附加到 linux 中的垂死进程
【发布时间】:2015-06-25 21:56:29
【问题描述】:

我想将 gdb 附加到一个垂死的进程,因为程序在生产中运行,我需要在那里调试它,如果我用 gdb 打开程序它会变慢并且计算机不是那么好。我试图在应用程序中捕获信号并将 gdb 附加到那里,但如果我自己发送信号,它就可以工作。当程序停顿(多线程程序,并且主线程陷入死锁或以某种方式卡住(或明显卡住)),并且用户强制它在桌面环境(LXDE)中退出时,我无法捕捉到任何信号.该程序全是 python,带有 PySide 的图形界面。只关心linux。 我的想法是创建一个内核驱动程序并尝试钩住进程终止或在那里发送信号,但由于这会很麻烦,我想问一下是否有一些工具可以解决这种事情或我可以制作的一些信息用于。谢谢。

【问题讨论】:

    标签: python linux multithreading gdb pyside


    【解决方案1】:

    可能有一种方法可以做你想做的事,但如果你做不到,也许冻结程序并检查它的内存映像就足够了?

    Enable core dump file generation 在它开始之前,然后一旦进程被冲洗,用 kill 终止它。然后用gdb打开core file,分析一下发生了什么。

    【讨论】:

    • 我想要解决的是当它被用户卡住时(基本上主线程会出现死锁或无限循环或其他东西)所以我现在正在做的是告诉用户打电话给我,这样我就可以在那时做一个核心转储。我可以为他们创建一个按钮,让他们在程序卡住时单击,然后在那里执行kill,它可以工作,我试过了,但它带来了额外的问题,因为我将程序分布在几个地方,这有点像在管理用户和不破坏其正常使用方面的麻烦。
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2015-02-19
    • 2012-08-09
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多