C 杀死GDB中的特定线程

C 杀死GDB中的特定线程,c,multithreading,debugging,gdb,C,Multithreading,Debugging,Gdb,我想杀死gdb中的一个特定线程。 这就是我将程序附加到gdb的方式 (gdb) r ./bin/myProg arg1 arg2 我通过 (gdb) info threads 3 Thread 0x7ffff61fe700 (LWP 28549) 0x000000323b6db7ad in foo () from /lib64/libc.so.6 * 2 Thread 0x7ffff6bff700 (LWP 28548) bar () at ./src/myProg.c:229

我想杀死gdb中的一个特定线程。 这就是我将程序附加到gdb的方式

(gdb) r ./bin/myProg arg1 arg2
我通过

(gdb) info threads
    3 Thread 0x7ffff61fe700 (LWP 28549)  0x000000323b6db7ad in foo () from /lib64/libc.so.6
  * 2 Thread 0x7ffff6bff700 (LWP 28548)  bar () at ./src/myProg.c:229
    1 Thread 0x7ffff7506740 (LWP 28547)  0x000000323be0822d in pthread_join () from /lib64/libpthread.so.0
这就是我试图杀死线程的方式(比如线程3)

这里我假设
raise
的签名为
raise(在gdb中显示的threadId,签名为0)

但是线程并没有被杀死。我应该使用不同的签名还是线程id错误

注:
我阅读了中的问题,但这并没有帮助我

多线程应用程序中的信号处理通常是复杂的。因此,更合理的做法是切换到线程,确保它没有保存任何资源(例如锁定的互斥锁),然后简单地代表它调用
pthread_exit()
,就好像它自动退出一样。

3不是有效的线程id(您可能需要在那里指定28548)。0不是有效的信号id(多线程程序中的信号混乱)。切换到有问题的线程并调用
pthread_exit()
?通过“invoke”,您的意思是在gdb中输入以下命令:“callpthread_exit()”?像这样吗?实际上它似乎是“call pthread_exit()”,如果线程正在等待锁,它将不起作用:-(从锁中获取某些内容的唯一方法是向其发送终止信号。Gdb可以提供帮助:-)
(gdb)t 3
[Switching to thread 3 (Thread 0x7ffff61fe700 (LWP 28549))]#0  foo () at ./src/myProg.c:288
(gdb)call raise(3,0)