使用 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。
有一个进程(我有源代码)卡在无效状态,因为它的轮询调用等待无效的 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。