1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<html> 3<!-- Copyright (C) 1988-2021 Free Software Foundation, Inc. 4 5Permission is granted to copy, distribute and/or modify this document 6under the terms of the GNU Free Documentation License, Version 1.3 or 7any later version published by the Free Software Foundation; with the 8Invariant Sections being "Free Software" and "Free Software Needs 9Free Documentation", with the Front-Cover Texts being "A GNU Manual," 10and with the Back-Cover Texts as in (a) below. 11 12(a) The FSF's Back-Cover Text is: "You are free to copy and modify 13this GNU Manual. Buying copies from GNU Press supports the FSF in 14developing GNU and promoting software freedom." --> 15<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ --> 16<head> 17<title>Debugging with GDB: Thread groups</title> 18 19<meta name="description" content="Debugging with GDB: Thread groups"> 20<meta name="keywords" content="Debugging with GDB: Thread groups"> 21<meta name="resource-type" content="document"> 22<meta name="distribution" content="global"> 23<meta name="Generator" content="makeinfo"> 24<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 25<link href="index.html#Top" rel="start" title="Top"> 26<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index"> 27<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> 28<link href="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" rel="up" title="GDB/MI General Design"> 29<link href="GDB_002fMI-Command-Syntax.html#GDB_002fMI-Command-Syntax" rel="next" title="GDB/MI Command Syntax"> 30<link href="Asynchronous-and-non_002dstop-modes.html#Asynchronous-and-non_002dstop-modes" rel="previous" title="Asynchronous and non-stop modes"> 31<style type="text/css"> 32<!-- 33a.summary-letter {text-decoration: none} 34blockquote.smallquotation {font-size: smaller} 35div.display {margin-left: 3.2em} 36div.example {margin-left: 3.2em} 37div.indentedblock {margin-left: 3.2em} 38div.lisp {margin-left: 3.2em} 39div.smalldisplay {margin-left: 3.2em} 40div.smallexample {margin-left: 3.2em} 41div.smallindentedblock {margin-left: 3.2em; font-size: smaller} 42div.smalllisp {margin-left: 3.2em} 43kbd {font-style:oblique} 44pre.display {font-family: inherit} 45pre.format {font-family: inherit} 46pre.menu-comment {font-family: serif} 47pre.menu-preformatted {font-family: serif} 48pre.smalldisplay {font-family: inherit; font-size: smaller} 49pre.smallexample {font-size: smaller} 50pre.smallformat {font-family: inherit; font-size: smaller} 51pre.smalllisp {font-size: smaller} 52span.nocodebreak {white-space:nowrap} 53span.nolinebreak {white-space:nowrap} 54span.roman {font-family:serif; font-weight:normal} 55span.sansserif {font-family:sans-serif; font-weight:normal} 56ul.no-bullet {list-style: none} 57--> 58</style> 59 60 61</head> 62 63<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000"> 64<a name="Thread-groups"></a> 65<div class="header"> 66<p> 67Previous: <a href="Asynchronous-and-non_002dstop-modes.html#Asynchronous-and-non_002dstop-modes" accesskey="p" rel="previous">Asynchronous and non-stop modes</a>, Up: <a href="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" accesskey="u" rel="up">GDB/MI General Design</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 68</div> 69<hr> 70<a name="Thread-Groups"></a> 71<h4 class="subsection">27.1.3 Thread Groups</h4> 72<p><small>GDB</small> may be used to debug several processes at the same time. 73On some platforms, <small>GDB</small> may support debugging of several 74hardware systems, each one having several cores with several different 75processes running on each core. This section describes the MI 76mechanism to support such debugging scenarios. 77</p> 78<p>The key observation is that regardless of the structure of the 79target, MI can have a global list of threads, because most commands that 80accept the ‘<samp>--thread</samp>’ option do not need to know what process that 81thread belongs to. Therefore, it is not necessary to introduce 82neither additional ‘<samp>--process</samp>’ option, nor an notion of the 83current process in the MI interface. The only strictly new feature 84that is required is the ability to find how the threads are grouped 85into processes. 86</p> 87<p>To allow the user to discover such grouping, and to support arbitrary 88hierarchy of machines/cores/processes, MI introduces the concept of a 89<em>thread group</em>. Thread group is a collection of threads and other 90thread groups. A thread group always has a string identifier, a type, 91and may have additional attributes specific to the type. A new 92command, <code>-list-thread-groups</code>, returns the list of top-level 93thread groups, which correspond to processes that <small>GDB</small> is 94debugging at the moment. By passing an identifier of a thread group 95to the <code>-list-thread-groups</code> command, it is possible to obtain 96the members of specific thread group. 97</p> 98<p>To allow the user to easily discover processes, and other objects, he 99wishes to debug, a concept of <em>available thread group</em> is 100introduced. Available thread group is an thread group that 101<small>GDB</small> is not debugging, but that can be attached to, using the 102<code>-target-attach</code> command. The list of available top-level thread 103groups can be obtained using ‘<samp>-list-thread-groups --available</samp>’. 104In general, the content of a thread group may be only retrieved only 105after attaching to that thread group. 106</p> 107<p>Thread groups are related to inferiors (see <a href="Inferiors-Connections-and-Programs.html#Inferiors-Connections-and-Programs">Inferiors Connections and Programs</a>). Each inferior corresponds to a thread group of a special 108type ‘<samp>process</samp>’, and some additional operations are permitted on 109such thread groups. 110</p> 111<hr> 112<div class="header"> 113<p> 114Previous: <a href="Asynchronous-and-non_002dstop-modes.html#Asynchronous-and-non_002dstop-modes" accesskey="p" rel="previous">Asynchronous and non-stop modes</a>, Up: <a href="GDB_002fMI-General-Design.html#GDB_002fMI-General-Design" accesskey="u" rel="up">GDB/MI General Design</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p> 115</div> 116 117 118 119</body> 120</html> 121