diff options
author | Conrad Meyer <cem@FreeBSD.org> | 2018-10-20 20:45:49 +0000 |
---|---|---|
committer | Conrad Meyer <cem@FreeBSD.org> | 2018-10-20 20:45:49 +0000 |
commit | e41793db2c6a9681804c0dec29e6bd0b42667ec2 (patch) | |
tree | 803f9ee4ad7e0a2fe31e47da4f2a754d508db979 | |
parent | 64aa915f8a6f76cd012297dffc95a6ccfc8c7c0e (diff) |
Notes
-rw-r--r-- | share/man/man4/ddb.4 | 21 | ||||
-rw-r--r-- | sys/ddb/db_command.c | 2 | ||||
-rw-r--r-- | sys/ddb/db_thread.c | 12 |
3 files changed, 18 insertions, 17 deletions
diff --git a/share/man/man4/ddb.4 b/share/man/man4/ddb.4 index 188b5c8fc5ec0..639060097f08c 100644 --- a/share/man/man4/ddb.4 +++ b/share/man/man4/ddb.4 @@ -60,7 +60,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 7, 2018 +.Dd September 21, 2018 .Dt DDB 4 .Os .Sh NAME @@ -1013,13 +1013,17 @@ For exact interpretation of output, visit header file. .\" .Pp -.It Ic show Cm thread Op Ar addr +.It Ic show Cm thread Op Ar addr | tid If no .Ar addr +or +.Ar tid is specified, show detailed information about current thread. -Otherwise, information about thread at -.Ar addr -is printed. +Otherwise, print information about the thread with ID +.Ar tid +or kernel address +.Ar addr . +(If the argument is a decimal number, it is assumed to be a tid.) .\" .Pp .It Ic show Cm threads @@ -1249,6 +1253,13 @@ rather than a traditional memory dump or minidump. reports whether a textdump has been scheduled. .Ic textdump unset cancels a request to perform a textdump as the next kernel core dump. +.Pp +.It Ic thread Ar addr | tid +Switch the debugger to the thread with ID +.Ar tid , +if the argument is a decimal number, or address +.Ar addr , +otherwise. .El .Sh VARIABLES The debugger accesses registers and variables as diff --git a/sys/ddb/db_command.c b/sys/ddb/db_command.c index db791582f29a0..2fb0b9b4f33b4 100644 --- a/sys/ddb/db_command.c +++ b/sys/ddb/db_command.c @@ -145,7 +145,7 @@ static struct command db_cmds[] = { { "reset", db_reset, 0, NULL }, { "kill", db_kill, CS_OWN, NULL }, { "watchdog", db_watchdog, CS_OWN, NULL }, - { "thread", db_set_thread, CS_OWN, NULL }, + { "thread", db_set_thread, 0, NULL }, { "run", db_run_cmd, CS_OWN, NULL }, { "script", db_script_cmd, CS_OWN, NULL }, { "scripts", db_scripts_cmd, 0, NULL }, diff --git a/sys/ddb/db_thread.c b/sys/ddb/db_thread.c index 98f2aa258d37c..7d9899b2685c7 100644 --- a/sys/ddb/db_thread.c +++ b/sys/ddb/db_thread.c @@ -55,20 +55,10 @@ void db_set_thread(db_expr_t tid, bool hastid, db_expr_t cnt, char *mod) { struct thread *thr; - db_expr_t radix; int err; - /* - * We parse our own arguments. We don't like the default radix. - */ - radix = db_radix; - db_radix = 10; - hastid = db_expression(&tid); - db_radix = radix; - db_skip_to_eol(); - if (hastid) { - thr = kdb_thr_lookup(tid); + thr = db_lookup_thread(tid, false); if (thr != NULL) { err = kdb_thr_select(thr); if (err != 0) { |