2012-07-09 25 views
0

我使用gdb附加正在運行的進程,但是,它總是停在__kernel_vsyscall。它看起來像停在我的系統調用msgrcv()。我不得不不斷「繼續」它,不知道什麼時候它可以跳出內核並回到應用程序。我怎樣才能讓它繼續下去?以下是我的程序。gdb:總是在__kernel_vsyscall()中停止在0xffffe410()

  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 
+2

似乎您的應用程序正在等待消息,並且在收到消息之前不會返回運行。 – ugoren 2012-07-09 11:34:19

回答

1

我是怎樣得到這個情況呢?

這種情況是完全正常當你連接到被阻塞在系統調用(等待消息,或讀取完成)一個過程。

如何讓它繼續?

您鍵入continue(此時應用程序會再次阻止,等待消息)。如果您想調試應用程序的某些部分,請在繼續之前設置斷點。