Skip to content

BadSugar/osxkerneltracer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Mac OS X kernel tracer

When the Mac OS X Mach kernel starts vomiting uncontrollably, dtrace is the tool of choice for getting a sniff of what's going on. However, when things actually do go wrong, the last thing you want to need doing is to be typing in dtrace commands from your phone. Based on Brendan Gregg's excellent hotkernel, osxkerneltracer makes it easy to get a sampling call trace dump from your kernel.

Building and running

osxkerneltracer is written in Go and therefore needs the Go toolchain to compile. If you're any kind of power user, Homebrew will get you there in a jiffy. Building and installing the application is then a simple call to make away:

$ make all install

Getting a trace is now simple when your system goes AWOL, but remember that root privileges are required for tracing the kernel:

$ sudo osxkerneltracer

The output will look something like the following:

Module | Method                     | Calls |      Share
-------+----------------------------+-------+-----------
kernel | machine_idle+0x1fd         | 72179 |  98.5271 %
kernel | 0xffffff8013552880+0x313   |   349 |   0.4764 %
vmmon  | Task_Switch+0xed1          |   169 |   0.2307 %
kernel | processor_idle+0xc5        |   127 |   0.1734 %
kernel | processor_idle+0xb4        |    30 |   0.0410 %
kernel | ipc_mqueue_post+0x227      |    22 |   0.0300 %
kernel | 0xffffff8013552880+0x3bf   |    18 |   0.0246 %
kernel | machine_idle+0x1ff         |    11 |   0.0150 %
kernel | thread_block_reason+0xbe   |    10 |   0.0137 %
kernel | lck_mtx_lock_spin+0x28     |     9 |   0.0123 %
kernel | processor_idle+0xab        |     8 |   0.0109 %
kernel | thread_continue+0x43       |     8 |   0.0109 %
kernel | vnode_iterate+0x1e9        |     8 |   0.0109 %
kernel | processor_idle+0xda        |     7 |   0.0096 %
vmmon  | Task_Switch+0xf74          |     7 |   0.0096 %
kernel | hfs_lock+0x1f              |     6 |   0.0082 %
kernel | processor_idle+0xdf        |     6 |   0.0082 %
kernel | thread_call_enter1+0x2b5   |     6 |   0.0082 %
kernel | lck_rw_lock_exclusive+0x24 |     5 |   0.0068 %
kernel | processor_idle+0xbb        |     5 |   0.0068 %
kernel | wait_queue_wakeup_all+0xb9 |     5 |   0.0068 %
..

If you want to trace a duration other than the default 5 seconds, pass the duration as a flag argument:

$ sudo osxkerneltracer -d 10s

About

Mac OS X kernel tracer

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%