svn commit: r339486 - in head: share/man/man4 sys/ddb
Conrad Meyer
cem at FreeBSD.org
Sat Oct 20 20:45:50 UTC 2018
Author: cem
Date: Sat Oct 20 20:45:49 2018
New Revision: 339486
URL: https://svnweb.freebsd.org/changeset/base/339486
Log:
ddb: Enable 'thread <address>'
Currently, the 'thread' command (to switch the debugger to another thread)
only accepts decimal-encoded tids. Use the same parsing logic as 'show
thread <arg>' to accept hex-encoded thread pointers in addition to
decimal-encoded tids.
Document the 'thread' command in ddb.4 and expand the 'show thread'
documentation to cover the tid usage.
Reported by: bwidawsk
Reviewed by: bwidawsk (earlier version), kib (earlier version), markj
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D16962
Modified:
head/share/man/man4/ddb.4
head/sys/ddb/db_command.c
head/sys/ddb/db_thread.c
Modified: head/share/man/man4/ddb.4
==============================================================================
--- head/share/man/man4/ddb.4 Sat Oct 20 20:41:25 2018 (r339485)
+++ head/share/man/man4/ddb.4 Sat Oct 20 20:45:49 2018 (r339486)
@@ -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
Modified: head/sys/ddb/db_command.c
==============================================================================
--- head/sys/ddb/db_command.c Sat Oct 20 20:41:25 2018 (r339485)
+++ head/sys/ddb/db_command.c Sat Oct 20 20:45:49 2018 (r339486)
@@ -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 },
Modified: head/sys/ddb/db_thread.c
==============================================================================
--- head/sys/ddb/db_thread.c Sat Oct 20 20:41:25 2018 (r339485)
+++ head/sys/ddb/db_thread.c Sat Oct 20 20:45:49 2018 (r339486)
@@ -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) {
More information about the svn-src-all
mailing list