gragas gragas - 1 year ago 89
C Question

How can I count syscalls in a Go program on OS X?

I'm trying to count the syscalls in my Go program on OS X Yosemite. I've tried using

, but both cause my program to crash with the following error, followed by a stack trace:

fatal error: runtime: bsdthread_register error

The two commands I've used are:

  1. sudo dtruss "./my_program my_arg"

  2. sudo dtrace -c "powerset 2" -n 'syscall:::entry { @num[probefunc] = count(); }'

Things I've Tried

The main takeaway from my Google-foo has been to unset
, which I have done numerous times to no avail.

is a binary that I created with
go install
. I've written an equivalent C program and both of the above commands work fine with that.

Answer Source

If you want to use dtrace on macOS, you will need to use the external linker to build your program

-ldflags -linkmode=external
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download