gdb调试多线程程序时的问题, 为何不在断点处停下来?
gdb调试多线程程序时的问题, 为何不在断点处停下来?
环境: redhat as 2.1 + gcc2.96 + gdb5.3.90
先进入gdb, 然后attach一个正在运行的服务器程序的pid
在调试多线程程序时遇到一个问题, 我在一个服务器线程函数中设置了一个断点
然后客户端访问服务器, 本来程序应该在这个断点处停下来, 但gdb显示:
Program received signal SIGTRAP, Trace/breakpoint trap.
0x40b11322 in accept () from /lib/libc.so.6
居然在libc.so.6库中停了下来??? 使用bt命令的输出如下:
#0 0x40b11322 in accept () from /lib/libc.so.6
#1 0x40027213 in accept () from /lib/libpthread.so.0
#2 0x0804f20a in Srv () at test.c:2674
#3 0x0804f719 in main (argc=1, argv=0xbffec3f4) at test.c:2867
但在简单的多线程程序的调试过程中没有这个问题(到断点处程序都会停下来)
请问这个问题如何解决??
------解决方案--------------------在到达断点之前收到了signal SIGTRAP
这个信号中断了程序的运行?
你可以先检查这个信号的原因,
如果没有问题,再continue试试能不能跑到断点处
------解决方案--------------------SIGTRAP: 当子进程因被追踪而暂停时便产生此信号给父进程.
------解决方案--------------------没有结果
------解决方案--------------------info thread
thread #