c - gdb:__kernel_vsyscall () 中始终停在 0xffffe410 处

标签 c gdb

我正在使用 gdb 附加正在运行的进程,但是它总是停止在 __kernel_vsyscall 处。看起来它停在我的系统调用 msgrcv() 处。我必须不断“继续”它,并且不知道它什么时候可以跳出内核并返回到应用程序。我怎样才能让它继续下去?以下是我的过程。

  1. 我是如何遇到这种情况的?
  2. 如何让它继续下去?

谢谢!

gdb
(gdb) attach PID
...
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
0xffffe410 in __kernel_vsyscall ()

(gdb)bt

#0  0xffffe410 in __kernel_vsyscall ()
#1  0x009ed573 in msgrcv () from /lib/libc.so.6
#2  0xf7f3a487 in _UX_wgetmsg (mode=0, msgp=0xffbb4178, pmaxtime=0xffbb4164, 
    pdata=0xf7f7a860, ux_type=0) at ../../../ux/com_ux/libux/com/UXipc.c:2550
#3  0xf7f3ad05 in UX_wgetmsg_v2 (mode=0, msgp=0xffbb4178, maxtime=10000, 
    ux_type=0) at ../../../ux/com_ux/libux/com/UXipc.c:2237
#4  0x0804bb9b in main (argc=1, argv=0xffbb5394)
    at /path/to/my_application:243

最佳答案

How did I get this situation?

当您附加到在系统调用中被阻止的进程(等待消息或读取完成)时,这种情况是完全正常的。

How to make it continue?

您输入继续(此时应用程序将再次阻塞,等待消息)。如果您想调试应用程序的某些部分,请在继续之前设置断点。

关于c - gdb:__kernel_vsyscall () 中始终停在 0xffffe410 处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391000/

相关文章:

c++ - GNU gdb 无法进入模板函数(OS X Mavericks)

linux - 使用源文件运行 gdb

c - 选择文件时子窗口的 Windows 消息循环中出现多余(错误)消息

debugging - 如何在 GDB 中打印类型属性?

c - srand() 并生成用于算法测试的数组

c - C 中的整数溢出和数字错误防御

lambda - 使用 gdb 调试 lambdas 有什么好运气吗?

c - 打印所有全局变量/局部变量?

C - 未分配被释放的指针

不能包含这两个文件(WinSock2、Windows.h)