1 # Copyright 2022-2024 Free Software Foundation, Inc. 2 3 # This program is free software; you can redistribute it and/or modify 4 # it under the terms of the GNU General Public License as published by 5 # the Free Software Foundation; either version 3 of the License, or 6 # (at your option) any later version. 7 # 8 # This program is distributed in the hope that it will be useful, 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # GNU General Public License for more details. 12 # 13 # You should have received a copy of the GNU General Public License 14 # along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 import gdb 17 18 from .server import request 19 20 21 def _thread_name(thr): 22 if thr.name is not None: 23 return thr.name 24 if thr.details is not None: 25 return thr.details 26 return None 27 28 29 @request("threads") 30 def threads(**args): 31 result = [] 32 for thr in gdb.selected_inferior().threads(): 33 one_result = { 34 "id": thr.global_num, 35 } 36 name = _thread_name(thr) 37 if name is not None: 38 one_result["name"] = name 39 result.append(one_result) 40 return { 41 "threads": result, 42 } 43