freebsd debugging tips and tricksavg/kyivbsd/kyivbsd2010.pdf · build debuggers dtrace summary...

46
Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon <[email protected]> KyivBSD, 2010 Andriy Gapon FreeBSD Debugging

Upload: doancong

Post on 20-Aug-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FreeBSD Debugging Tips And Tricksavg/kyivbsd/KyivBSD2010.pdf · Build Debuggers DTrace Summary FreeBSD Debugging Tips And Tricks Andriy Gapon  KyivBSD, 2010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Appendix For Further Reading

References

Kernel DebuggingFreeBSD Developers’ Handbook.

John H. Baldwin.Introduction to Debugging the FreeBSD Kernel.BSDCan 2008.

Andriy Gapon FreeBSD Debugging