]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/dap - Getting thread names
authorSimon Farre <simon.farre.cx@gmail.com>
Mon, 12 Jun 2023 19:32:46 +0000 (21:32 +0200)
committerSimon Farre <simon.farre.cx@gmail.com>
Mon, 19 Jun 2023 14:08:45 +0000 (16:08 +0200)
Renamed thread_name according to convention (_ first)

When testing firefox tests, it is apparent that
_get_threads returns threads with name field = None.

I had initially thought that this was due to Firefox setting the names
using /proc/pid/task/tid/comm, by writing directly to the proc fs the
names, but apparently GDB seems to catch this, because I re-wrote
the basic-dap.exp/c to do this specifically and it saw the changes.

So I couldn't determine right now, what operation of name change that
GDB does not pick up, but with this patch, GDB will pick up the thread
names for an applications that set the name of a thread in ways that
aren't obvious.

gdb/python/lib/gdb/dap/threads.py

index c3b42ee4991e94a244cdd38d439935dbb68c6e67..253756022df075c49a48b270676c30eae505cd67 100644 (file)
@@ -18,6 +18,12 @@ import gdb
 from .server import request
 from .startup import send_gdb_with_response, in_gdb_thread
 
+def _thread_name(thr):
+    if thr.name is not None:
+        return thr.name
+    if thr.details is not None:
+        return thr.details
+    return None
 
 # A helper function to construct the list of threads.
 @in_gdb_thread
@@ -27,7 +33,7 @@ def _get_threads():
         one_result = {
             "id": thr.global_num,
         }
-        name = thr.name
+        name = _thread_name(thr)
         if name is not None:
             one_result["name"] = name
         result.append(one_result)