为程序运行禁用SIGABRT(Valgrind)

问题描述 投票:1回答:1

我的任务是使用Valgrind调试程序。由于使用了Valgrind,程序变得非常慢。这是一个问题,因为该程序具有一个观察程序线程,如果它们在某些函数上花费过多时间,则它们会杀死使用SIGABRT的慢线程。当程序以这种方式退出时,它处于有效状态,因此即使SIGABRT被强制转换,我也要保持程序运行。我无法更改程序以从源代码关闭监视程序线程。

现在我的问题:

Valgrind或与Valgrind兼容的工具是否可以让我选择对程序说:“如果收到SIGABRT,将其视为空操作并继续操作?”

linux valgrind
1个回答
0
投票

您可以通过使用vgdb在valgrind + gdb下运行程序来实现所需的目标。

然后使用gdb,您可以控制如何处理SIGABRT信号。

例如,使用以下命令启动程序:valgrind --vgdb-stop-at =启动your_program

在另一个窗口中,启动gdb:(gdb)处理SIGABRT nostop打印nopass(gdb)目标远程| vgdb(gdb)继续

请参见http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.