gpt4 book ai didi

c - 杀死GDB中的特定线程

转载 作者:行者123 更新时间:2023-12-01 16:04:15 31 4
gpt4 key购买 nike

我想杀死 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)的方法

(gdb)t 3
[Switching to thread 3 (Thread 0x7ffff61fe700 (LWP 28549))]#0 foo () at ./src/myProg.c:288
(gdb)call raise(3,0)

这里我假设raise的签名为raise(threadId as displayed in the gdb,signo as 0)

但是线程并没有被杀死。我应该使用不同的 signo 还是线程 ID 错误?

注意:我读过this问题如此,但这对我没有帮助

最佳答案

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

关于c - 杀死GDB中的特定线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23237354/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com