【问题标题】:How can I count syscalls in a Go program on OS X?如何在 OS X 上计算 Go 程序中的系统调用?
【发布时间】:2016-10-11 19:00:26
【问题描述】:

我正在尝试在 OS X Yosemite 上计算我的 Go 程序中的系统调用。我试过使用dtrussdtrace,但两者都会导致我的程序崩溃并出现以下错误,然后是堆栈跟踪:

fatal error: runtime: bsdthread_register error

我使用的两个命令是:

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

我尝试过的事情

我的 Google-foo 的主要收获是取消设置 DYLD_INSERT_LIBRARIES,我已经做了很多次都无济于事。

./my_program 是我使用go install 创建的二进制文件。我编写了一个等效的 C 程序,上面的两个命令都可以正常工作。

【问题讨论】:

  • @JimB 谢谢,这解决了我的问题。

标签: c go system-calls


【解决方案1】:

如果你想在 macOS 上使用 dtrace,你需要使用外部链接器来构建你的程序

-ldflags -linkmode=external

【讨论】:

    猜你喜欢
    • 2015-09-11
    • 1970-01-01
    • 2010-09-05
    • 2012-07-16
    • 2011-03-26
    • 2011-04-17
    • 1970-01-01
    • 2012-03-17
    • 2016-01-16
    相关资源
    最近更新 更多