我正在尝试在OS X Yosemite上计算我的Go程序中的系统调用。我尝试过使用dtruss
和dtrace
,但两者都会导致我的程序崩溃并出现以下错误,然后是堆栈跟踪:
fatal error: runtime: bsdthread_register error
我使用的两个命令是:
sudo dtruss "./my_program my_arg"
sudo dtrace -c "powerset 2" -n 'syscall:::entry { @num[probefunc] = count(); }'
我的Google-foo的主要内容是取消设置DYLD_INSERT_LIBRARIES
,我已多次无效。
./my_program
是我使用go install
创建的二进制文件。我已经编写了一个等效的C程序,上述两个命令都可以正常工作。
答案 0 :(得分:1)
如果要在macOS上使用dtrace,则需要使用外部链接器来构建程序
-ldflags -linkmode=external