Один из моих коллег сказал мне ltrace(1)
. Это очень помогло мне в той же ситуации.
Предположим, что имя общего объекта вашего расширения C равно myext.so
, и вы хотите выполнить benchmark.py
, затем
ltrace -x @myext.so -c python benchmark.py
Выходная информация равна
% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
24.88 30.202126 7550531 4 ldap_result
12.46 15.117625 7558812 2 l_ldap_result4
12.41 15.059652 5019884 3 ldap_chase_v3referrals
12.41 15.057678 3764419 4 ldap_new_connection
12.40 15.050310 3762577 4 ldap_int_open_connection
12.39 15.042360 3008472 5 ldap_send_server_request
12.38 15.029055 3757263 4 ldap_connect_to_host
0.05 0.057890 28945 2 ldap_get_option
0.04 0.052182 26091 2 ldap_sasl_bind
0.03 0.030760 30760 1 l_ldap_get_option
0.03 0.030635 30635 1 LDAP_get_option
0.02 0.029960 14980 2 ldap_initialize
0.02 0.027988 27988 1 ldap_int_initialize
0.02 0.026722 26722 1 l_ldap_simple_bind
0.02 0.026386 13193 2 ldap_send_initial_request
0.02 0.025810 12905 2 ldap_int_select
....
Требуется особая осторожность, если ваш общий объект имеет -
или +
в имени файла. Эти символы не обрабатываются как есть (подробности см. man 1 ltrace
).
Подстановочный знак *
может быть временным решением, например -x @myext*
вместо -x @myext-2.so
.