使用 gdb 停止挂起的轮询

Break from hanging poll with gdb

有一个进程(我有源代码)卡在无效状态,因为它的轮询调用等待无效的 fd 变得可写。

因为这永远不会发生,轮询将永远阻塞。

是否可以通过某种方式强制退出此轮询操作?

已附加 Gdb,我想看看在投票后如何继续应用程序 returns。

#0  0xb673e120 in poll () at ../sysdeps/unix/syscall-template.S:84

这是我可以在不重启应用程序的情况下实现的吗?

Is it somehow possible to force this poll operation to quit?

是的,您可以使用 return 命令将当前堆栈帧过早地强制为 return。您也可以选择任何合适的值作为函数的 return 值。请参阅此处的文档:https://sourceware.org/gdb/current/onlinedocs/gdb/Returning.html#Returning