Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Debugging 如何在多线程c++;运行过程?_Debugging - Fatal编程技术网

Debugging 如何在多线程c++;运行过程?

Debugging 如何在多线程c++;运行过程?,debugging,Debugging,在死锁或活锁等情况下调试多线程程序时,有哪些有用的实用程序?我想知道gcore是提供进程中所有运行thred的堆栈转储,还是只提供主线程。另外,gcore是否挂起/终止正在运行的进程?关于调试多线程程序的任何信息都将非常有用。gdb支持在线程之间切换,以调查正在进行的一切的状态。是一些详细信息。gdb支持在线程之间切换,以调查正在发生的一切的状态。更多信息。如Carl所述,gdb支持线程。为GDB使用UI(比如Eclipse提供的UI)使这变得更容易,但是在通过命令行运行时,您可以通过键入“in

在死锁或活锁等情况下调试多线程程序时,有哪些有用的实用程序?我想知道gcore是提供进程中所有运行thred的堆栈转储,还是只提供主线程。另外,gcore是否挂起/终止正在运行的进程?关于调试多线程程序的任何信息都将非常有用。

gdb
支持在线程之间切换,以调查正在进行的一切的状态。是一些详细信息。

gdb
支持在线程之间切换,以调查正在发生的一切的状态。更多信息。

如Carl所述,gdb支持线程。为GDB使用UI(比如Eclipse提供的UI)使这变得更容易,但是在通过命令行运行时,您可以通过键入“info threads”来获取线程信息。这将列出线程,并允许您通过键入“thread 3”等进行切换。一旦切换到线程,您可以进行回溯,以查看当前线程堆栈以及您用于单线程进程的其他命令

如Carl所述,gdb支持线程。为GDB使用UI(比如Eclipse提供的UI)使这变得更容易,但是在通过命令行运行时,您可以通过键入“info threads”来获取线程信息。这将列出线程,并允许您通过键入“thread 3”等进行切换。一旦切换到线程,您可以进行回溯,以查看当前线程堆栈以及您用于单线程进程的其他命令

gdb有一些很好的处理线程的特性。我的最爱之一是
线程应用
。这允许您对多个线程运行相同的命令

例如,如果希望获得所有线程的回溯跟踪,可以使用以下方法:

thread apply all where
要解决这个问题,命令以
threadapply
开头

接下来是线程列表。在这里,我使用关键字
all
将其应用于进程中的每个线程。您还可以使用以空格分隔的gdb线程ID列表(
threadapply123command


最后是要执行的命令。我使用了
where
,它显示了调用堆栈,但是您可以使用任何您想要的命令。

gdb有一些很好的处理线程的功能。我的最爱之一是
线程应用
。这允许您对多个线程运行相同的命令

例如,如果希望获得所有线程的回溯跟踪,可以使用以下方法:

thread apply all where
要解决这个问题,命令以
threadapply
开头

接下来是线程列表。在这里,我使用关键字
all
将其应用于进程中的每个线程。您还可以使用以空格分隔的gdb线程ID列表(
threadapply123command

最后是要执行的命令。我使用了
where
,它显示了调用堆栈,但您可以使用任何您想要的命令