git: 2d71406a6ff3 - main - dtrace_kinst.4: mention dtrace -l -P kinst, give a more complete example
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 27 Feb 2023 15:03:43 UTC
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=2d71406a6ff31b2b8873c236d7b2b1186e2bffb4 commit 2d71406a6ff31b2b8873c236d7b2b1186e2bffb4 Author: Christos Margiolis <christos@FreeBSD.org> AuthorDate: 2023-02-27 14:44:13 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2023-02-27 15:03:10 +0000 dtrace_kinst.4: mention dtrace -l -P kinst, give a more complete example Reviewed by: markj Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D38801 --- share/man/man4/dtrace_kinst.4 | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/share/man/man4/dtrace_kinst.4 b/share/man/man4/dtrace_kinst.4 index 48253add6855..0987ba493e55 100644 --- a/share/man/man4/dtrace_kinst.4 +++ b/share/man/man4/dtrace_kinst.4 @@ -24,37 +24,38 @@ .\" .\" $FreeBSD$ .\" -.Dd October 01, 2022 +.Dd February 27, 2023 .Dt DTRACE_KINST 4 .Os .Sh NAME .Nm dtrace_kinst -.Nd a DTrace provider for tracing arbitrary instructions in a given kernel -function. +.Nd a DTrace provider for tracing arbitrary instructions in a given kernel function .Sh SYNOPSIS kinst::<function>:<instruction> .Sh DESCRIPTION -.Pp The DTrace .Nm kinst provider allows the user to trace any instruction in a given kernel function. <function> corresponds to the function to be traced, and <instruction> is the offset to the specific instruction, and can be obtained from the function's -disassembly using -.Xr kgdb 1 . +disassembly using kgdb from the gdb package. .Pp .Nm kinst creates probes on-demand, meaning it searches for and parses the function's instructions each time .Xr dtrace 1 -is run, and not at module load time. This is in contrast to FBT's load-time -parsing, since +is run, and not at module load time. +This is in contrast to FBT's load-time parsing, since .Nm kinst can potentially create thousands of probes for just a single function, instead of up to two (entry and return) in the case of FBT. +A result of this is that +.Cm dtrace -l -P kinst +will not match any probes. +.Sh IMPLEMENTATION NOTES +The provider is currently implemented only for amd64. .Sh EXAMPLES -.Pp -Find the offset to the third instruction in +Find the offset corresponding to the third instruction in .Fn vm_fault and trace it: .Bd -literal -offset indent @@ -66,6 +67,12 @@ Dump of assembler code for function vm_fault: 0xffffffff80876df4 <+4>: 41 57 push %r15 # dtrace -n 'kinst::vm_fault:4' + 2 81500 vm_fault:4 + 2 81500 vm_fault:4 + 2 81500 vm_fault:4 + 2 81500 vm_fault:4 + 0 81500 vm_fault:4 + ... .Ed .Pp Trace all instructions in @@ -73,11 +80,8 @@ Trace all instructions in .Bd -literal -offset indent # dtrace -n 'kinst::amd64_syscall:' .Ed -.Sh IMPLEMENTATION NOTES -The provider is currently implemented only for amd64. .Sh SEE ALSO -.Xr dtrace 1 , -.Xr kgdb 1 +.Xr dtrace 1 .Sh HISTORY The .Nm kinst