user3835277
user3835277

Reputation:

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 dtruss and dtrace, 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 DYLD_INSERT_LIBRARIES, which I have done numerous times to no avail.

./my_program 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.

Upvotes: 1

Views: 321

Answers (1)

Mr_Pink
Mr_Pink

Reputation: 109347

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

-ldflags -linkmode=external

Upvotes: 1

Related Questions