From 724f99641f4c5eea596f69ffd464bb1fb34245c3 Mon Sep 17 00:00:00 2001 From: Tomasz Grabiec Date: Tue, 19 Jul 2016 20:20:02 +0200 Subject: [PATCH] scylla-gdb.py: Add "scylla shard" command Beams you up to the thread corresponding to given seastar shard. Example: (gdb) scylla shard 0 Switched to thread 49 --- scylla-gdb.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/scylla-gdb.py b/scylla-gdb.py index 368fec5d77..723fd20088 100644 --- a/scylla-gdb.py +++ b/scylla-gdb.py @@ -378,6 +378,21 @@ class scylla_apply(gdb.Command): gdb.write("\nShard %d: \n\n" % (r['_id'])) gdb.execute(arg) +class scylla_shard(gdb.Command): + def __init__(self): + gdb.Command.__init__(self, 'scylla shard', gdb.COMMAND_USER, gdb.COMPLETE_NONE) + def invoke(self, arg, from_tty): + id = int(arg) + orig = gdb.selected_thread() + for t in gdb.selected_inferior().threads(): + t.switch() + reactor = gdb.parse_and_eval('local_engine') + if reactor and reactor['_id'] == id: + gdb.write('Switched to thread %d\n' % t.num) + return + orig.switch() + gdb.write('Error: Shard %d not found\n' % (id)) + scylla() scylla_databases() scylla_keyspaces() @@ -388,3 +403,4 @@ scylla_lsa() scylla_lsa_zones() scylla_timers() scylla_apply() +scylla_shard()