freebsd debugging tips and tricksavg/kyivbsd/kyivbsd2010.pdf · build debuggers dtrace summary...
TRANSCRIPT
![Page 1: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/1.jpg)
BuildDebuggers
DTraceSummary
FreeBSD Debugging Tips And Tricks
Andriy Gapon <[email protected]>
KyivBSD, 2010
Andriy Gapon FreeBSD Debugging
![Page 2: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/2.jpg)
BuildDebuggers
DTraceSummary
Outline
1 BuildKernel OptionsBuild, Installation And Boot Options
2 DebuggersDDBTextdumpKGDBGDB And Qemu
3 DTraceProbesLanguagePreparing for DTraceExamples
Andriy Gapon FreeBSD Debugging
![Page 3: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/3.jpg)
BuildDebuggers
DTraceSummary
Introduction/Overview
Why we need you
Types of bugs and tools
Andriy Gapon FreeBSD Debugging
![Page 4: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/4.jpg)
BuildDebuggers
DTraceSummary
Introduction/Overview
Why we need you
Types of bugs and tools
Andriy Gapon FreeBSD Debugging
![Page 5: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/5.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Kernel Configuration Options
Debug symbols and optimization
makeoptions DEBUG="-g -O1"
KDB options, see sys/conf/NOTES
options KDBoptions KDB_TRACE#options KDB_UNATTENDED
Backends
options DDB#options GDB
Andriy Gapon FreeBSD Debugging
![Page 6: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/6.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Kernel Configuration Options
Debug symbols and optimization
makeoptions DEBUG="-g -O1"
KDB options, see sys/conf/NOTES
options KDBoptions KDB_TRACE#options KDB_UNATTENDED
Backends
options DDB#options GDB
Andriy Gapon FreeBSD Debugging
![Page 7: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/7.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Kernel Configuration Options
Debug symbols and optimization
makeoptions DEBUG="-g -O1"
KDB options, see sys/conf/NOTES
options KDBoptions KDB_TRACE#options KDB_UNATTENDED
Backends
options DDB#options GDB
Andriy Gapon FreeBSD Debugging
![Page 8: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/8.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Crash dump
Don’t forget dumpdev!
Can be set only on a booted system, dumpon(8)
Can be set via rc.conf
rc.confdumpdev="/dev/gpt/9VM0V8VZ.swap"dumpdev="AUTO"
Andriy Gapon FreeBSD Debugging
![Page 9: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/9.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Crash dump
Don’t forget dumpdev!
Can be set only on a booted system, dumpon(8)
Can be set via rc.conf
rc.confdumpdev="/dev/gpt/9VM0V8VZ.swap"dumpdev="AUTO"
Andriy Gapon FreeBSD Debugging
![Page 10: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/10.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Crash dump
Don’t forget dumpdev!
Can be set only on a booted system, dumpon(8)
Can be set via rc.conf
rc.confdumpdev="/dev/gpt/9VM0V8VZ.swap"dumpdev="AUTO"
Andriy Gapon FreeBSD Debugging
![Page 11: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/11.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Kernel Configuration Options
Self-Diagnostics, see sys/conf/NOTES
options INVARIANTSoptions WITNESS
Other debug options
options CAMDEBUG
Miscellaneous options
options SC_HISTORY_SIZE=1000 #See sc(4)options MSGBUF_SIZE=131072options INCLUDE_CONFIG_FILE
Andriy Gapon FreeBSD Debugging
![Page 12: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/12.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Kernel Configuration Options
Self-Diagnostics, see sys/conf/NOTES
options INVARIANTSoptions WITNESS
Other debug options
options CAMDEBUG
Miscellaneous options
options SC_HISTORY_SIZE=1000 #See sc(4)options MSGBUF_SIZE=131072options INCLUDE_CONFIG_FILE
Andriy Gapon FreeBSD Debugging
![Page 13: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/13.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Build, Installation And Boot Options
Configuring multiple kernel variants
KERNELdbgident KERNELdbginclude KERNELnooption OPTNAMEnodevice devname
Andriy Gapon FreeBSD Debugging
![Page 14: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/14.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Build, Installation And Boot Options
Building multiple kernel variants
make buildkernel KERNCONF=KERNELdbgmake buildkernel KERNFAST=KERNELdbgmake buildkernel SRCCONF=/path/to/src.conf__MAKE_CONF=/path/to/make.conf. . . NO_MODULES . . . MODULES_OVERRIDE . . .
Cross-building kernel
make kernel-toolchain TARGET=i386make buildkernel TARGET=i386
Andriy Gapon FreeBSD Debugging
![Page 15: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/15.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Build, Installation And Boot Options
Installing multiple kernels
make installkernel KERNCONF=KERNELdbgINSTKERNNAME=kernel.dbgmake installkernel DESTDIR=/alt/root
Choosing a kernel to boot
nextboot -k kernel.dbg -o -v
nextboot doesn’t properly work with ZFS
Andriy Gapon FreeBSD Debugging
![Page 16: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/16.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Build, Installation And Boot Options
Installing multiple kernels
make installkernel KERNCONF=KERNELdbgINSTKERNNAME=kernel.dbgmake installkernel DESTDIR=/alt/root
Choosing a kernel to boot
nextboot -k kernel.dbg -o -v
nextboot doesn’t properly work with ZFS
Andriy Gapon FreeBSD Debugging
![Page 17: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/17.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Loader
Learn basic loader variables and commands before pressing “6”
Loader online help: ’help’ and ’?’
Loader promptunloadshowlsdevset currdev=disk1s1aset kernel=kernel.dbgset vfs.root.mount_from=”ufs:/dev/ad4s1a”boot
Andriy Gapon FreeBSD Debugging
![Page 18: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/18.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Loader
Learn basic loader variables and commands before pressing “6”
Loader online help: ’help’ and ’?’
Loader promptunloadshowlsdevset currdev=disk1s1aset kernel=kernel.dbgset vfs.root.mount_from=”ufs:/dev/ad4s1a”boot
Andriy Gapon FreeBSD Debugging
![Page 19: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/19.jpg)
BuildDebuggers
DTraceSummary
Kernel OptionsBuild, Installation And Boot Options
Loader
Learn basic loader variables and commands before pressing “6”
Loader online help: ’help’ and ’?’
Loader promptunloadshowlsdevset currdev=disk1s1aset kernel=kernel.dbgset vfs.root.mount_from=”ufs:/dev/ad4s1a”boot
Andriy Gapon FreeBSD Debugging
![Page 20: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/20.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
DDB
Available online
Lots of useful built-in commands
No access to debug symbols
Andriy Gapon FreeBSD Debugging
![Page 21: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/21.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
DDB
Available online
Lots of useful built-in commands
No access to debug symbols
Andriy Gapon FreeBSD Debugging
![Page 22: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/22.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
DDB
Available online
Lots of useful built-in commands
No access to debug symbols
Andriy Gapon FreeBSD Debugging
![Page 23: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/23.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
Textdump
textdump(4) is enabled by KDB and DDB options
ddb(8) - configure ddb(4) scripting
ddb script kdb.enter.panic=”textdump set; capture on; bt; calldoadump; reset”
Can be configured in rc.conf
rc.confddb_enable="YES"ddb_config="/etc/ddb.conf"
Andriy Gapon FreeBSD Debugging
![Page 24: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/24.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
Textdump
textdump(4) is enabled by KDB and DDB options
ddb(8) - configure ddb(4) scripting
ddb script kdb.enter.panic=”textdump set; capture on; bt; calldoadump; reset”
Can be configured in rc.conf
rc.confddb_enable="YES"ddb_config="/etc/ddb.conf"
Andriy Gapon FreeBSD Debugging
![Page 25: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/25.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
Textdump
textdump(4) is enabled by KDB and DDB options
ddb(8) - configure ddb(4) scripting
ddb script kdb.enter.panic=”textdump set; capture on; bt; calldoadump; reset”
Can be configured in rc.conf
rc.confddb_enable="YES"ddb_config="/etc/ddb.conf"
Andriy Gapon FreeBSD Debugging
![Page 26: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/26.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
KGDB
Live kernel examination
kgdb
info line *0xffffffff80539b60
Post-mortem analysis
Serial/Firewire console
GDB scripting, Scripts from John Baldwin
http://people.freebsd.org/~jhb/gdb/
Andriy Gapon FreeBSD Debugging
![Page 27: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/27.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
KGDB
Live kernel examination
kgdb
info line *0xffffffff80539b60
Post-mortem analysis
Serial/Firewire console
GDB scripting, Scripts from John Baldwin
http://people.freebsd.org/~jhb/gdb/
Andriy Gapon FreeBSD Debugging
![Page 28: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/28.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
KGDB
Live kernel examination
kgdb
info line *0xffffffff80539b60
Post-mortem analysis
Serial/Firewire console
GDB scripting, Scripts from John Baldwin
http://people.freebsd.org/~jhb/gdb/
Andriy Gapon FreeBSD Debugging
![Page 29: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/29.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
KGDB
Live kernel examination
kgdb
info line *0xffffffff80539b60
Post-mortem analysis
Serial/Firewire console
GDB scripting, Scripts from John Baldwin
http://people.freebsd.org/~jhb/gdb/
Andriy Gapon FreeBSD Debugging
![Page 30: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/30.jpg)
BuildDebuggers
DTraceSummary
DDBTextdumpKGDBGDB And Qemu
GDB And Qemu
Qemu
qemu . . . -S -s
Remote GDB
GDB session(gdb) target remote localhost:1234
Andriy Gapon FreeBSD Debugging
![Page 31: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/31.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Probes
fbt
systrace
sdt
profile
Andriy Gapon FreeBSD Debugging
![Page 32: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/32.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Probes
fbt
systrace
sdt
profile
Andriy Gapon FreeBSD Debugging
![Page 33: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/33.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Probes
fbt
systrace
sdt
profile
Andriy Gapon FreeBSD Debugging
![Page 34: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/34.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Probes
fbt
systrace
sdt
profile
Andriy Gapon FreeBSD Debugging
![Page 35: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/35.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Language
Variables, functions
self->ts = timestamp;
Predicates
/self->trace && stringof(args[0]->uk_name) == "zio_buf_512"/
Aggregations
@times[stack()] = quantize(timestamp - self->ts);
Andriy Gapon FreeBSD Debugging
![Page 36: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/36.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Language
Variables, functions
self->ts = timestamp;
Predicates
/self->trace && stringof(args[0]->uk_name) == "zio_buf_512"/
Aggregations
@times[stack()] = quantize(timestamp - self->ts);
Andriy Gapon FreeBSD Debugging
![Page 37: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/37.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Language
Variables, functions
self->ts = timestamp;
Predicates
/self->trace && stringof(args[0]->uk_name) == "zio_buf_512"/
Aggregations
@times[stack()] = quantize(timestamp - self->ts);
Andriy Gapon FreeBSD Debugging
![Page 38: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/38.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Preparing for DTracehttp://wiki.freebsd.org/DTrace
CTF, WITH_CTF
Kernel options
options KDTRACE_HOOKSoptions DDB_CTFoptions KDTRACE_FRAME # amd64-onlymakeoptions WITH_CTF=1
DTrace modules
kldload fbtkldload dtraceall
Andriy Gapon FreeBSD Debugging
![Page 39: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/39.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Preparing for DTracehttp://wiki.freebsd.org/DTrace
CTF, WITH_CTF
Kernel options
options KDTRACE_HOOKSoptions DDB_CTFoptions KDTRACE_FRAME # amd64-onlymakeoptions WITH_CTF=1
DTrace modules
kldload fbtkldload dtraceall
Andriy Gapon FreeBSD Debugging
![Page 40: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/40.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Preparing for DTracehttp://wiki.freebsd.org/DTrace
CTF, WITH_CTF
Kernel options
options KDTRACE_HOOKSoptions DDB_CTFoptions KDTRACE_FRAME # amd64-onlymakeoptions WITH_CTF=1
DTrace modules
kldload fbtkldload dtraceall
Andriy Gapon FreeBSD Debugging
![Page 41: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/41.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Examples
fbt:kernel:wakeup:entry/(void*)arg0 == (void*)&kernel‘cnt.v_free_count/{
@stacks[stack()] = count();@tids[pid, tid] = count();
}
Andriy Gapon FreeBSD Debugging
![Page 42: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/42.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Examples
fbt::vm_page_wire:entry/args[0]->wire_count == 0/{
@new[stack(10)] = count();}
Andriy Gapon FreeBSD Debugging
![Page 43: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/43.jpg)
BuildDebuggers
DTraceSummary
ProbesLanguagePreparing for DTraceExamples
Examples
profile:::profile-1001{
@stacks[curthread->td_oncpu, pid,tid, execname, stack()] = count();
}END {
printf("\n\n");printf("***** Top Processes:\n");trunc(@stacks, 20);printa(@stacks);
}
Andriy Gapon FreeBSD Debugging
![Page 44: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/44.jpg)
BuildDebuggers
DTraceSummary
Summary
Debugging in a wide sense has many faces: diagnostics,debuggers, checksDebugging is not as hard as it may seem
Outlook
ktr(4) for scheduler debugginghwpmc(4) for system and userland profilingSW_WATCHDOG and MP_WATCHDOG for deadlockdebuggingDTrace in userland
Andriy Gapon FreeBSD Debugging
![Page 45: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/45.jpg)
Appendix For Further Reading
For Further Reading I
man(1)make(1)config(5)ddb(4)textdump(4)make.conf(5)src.conf(5)build(7)ddb(8)loader(8)nextboot(8)
NOTES filesGDB manualshttp://sourceware.org/gdb/FreeBSD HandbookFreeBSD Developers’ HandbookFreeBSD WikiGoogle
Andriy Gapon FreeBSD Debugging
![Page 46: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon KyivBSD, 2010](https://reader031.vdocuments.mx/reader031/viewer/2022021901/5b7ad8027f8b9a4c4a8b6be7/html5/thumbnails/46.jpg)
Appendix For Further Reading
References
Kernel DebuggingFreeBSD Developers’ Handbook.
John H. Baldwin.Introduction to Debugging the FreeBSD Kernel.BSDCan 2008.
Andriy Gapon FreeBSD Debugging