Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 用GDB调试正在运行的守护进程_C_Gdb_Pthreads_Freeze - Fatal编程技术网

C 用GDB调试正在运行的守护进程

C 用GDB调试正在运行的守护进程,c,gdb,pthreads,freeze,C,Gdb,Pthreads,Freeze,我想用GDB调试一个正在运行的守护进程。我有各自进程的进程id。我键入:gdb附加进程id信息线程 我正在获取线程列表。*一个是当前正在运行的线程(如果我错了,请更正我) 现在我发送: systemctl kill daemonname(我在其他终端上运行的这个命令) 现在我想检查一下,在点击这个命令之后,哪个线程正在运行 因为我的守护进程被卡住了。这不是正确的杀戮。我尝试使用服务名称状态命令。因为在上面的“servicename status”命令之后它被卡住了。我想跟踪最后一个被卡住的线程,

我想用GDB调试一个正在运行的守护进程。我有各自进程的进程id。我键入:gdb附加进程id信息线程

我正在获取线程列表。*一个是当前正在运行的线程(如果我错了,请更正我)

现在我发送:

systemctl kill daemonname(我在其他终端上运行的这个命令)

现在我想检查一下,在点击这个命令之后,哪个线程正在运行

因为我的守护进程被卡住了。这不是正确的杀戮。我尝试使用服务名称状态命令。因为在上面的“servicename status”命令之后它被卡住了。我想跟踪最后一个被卡住的线程,因为我的守护进程仍然没有被杀死,但是运行命令检查守护进程的状态是被阻塞的,输出上没有输出。但如果正确终止,则应显示服务未运行或未找到命令

请帮帮我。。我是新来的

我尝试使用服务名称状态命令

你可能拿错了

执行
systemctl kill daemonname
后,您希望将GDB连接到进程,并查看它被卡住的位置(使用
thread apply all where

您可能会看到线程处于死锁状态(例如,线程T1正在等待线程T2持有的互斥锁A;线程T2正在等待线程T1持有的互斥锁B)

我想追踪最后一个卡住的线程

一般来说,跟踪多线程进程是一件愚蠢的差事,因为跟踪进程的事实会改变执行环境,并且通常会导致它在没有跟踪的情况下不再匹配执行

相反,您应该考虑不变量,并确保它们没有被违反