#c #go #system-calls
#c #Вперед #системные вызовы
Вопрос:
Я пытаюсь посчитать системные вызовы в моей программе Go на OS X Yosemite. Я пытался использовать 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, и обе вышеуказанные команды отлично с этим справляются.
Комментарии:
1. @JimB спасибо, это решило мою проблему.
Ответ №1:
Если вы хотите использовать dtrace на macOS, вам нужно будет использовать внешний компоновщик для сборки вашей программы
-ldflags -linkmode=external