Си++ не знаю, но по работе пришлось столкнуться с отладкой и профилированием программы, которая посторена на большой бибилиотеке шаблонов (больше 20 тысяч строк). На самом нижнем уровне вызываются функции из некоторых бибилиотек на чистом Си.
Вопрос: профилировщик выводит информацию о функциях как
имя_функции(список аргументов). Разгрести, что же в итоге вызывается на самом нижнем уровне, в данный момент сложно.
Типичная информация о функции выглядит, например, так:
---
gmm::mult_by_row<gmm::row_matrix<gmm::rsvector<double> >,
std::vector<double,std::allocator<double> >,
std::vector<double, std::allocator<double> >> (gmm::row_matrix<gmm::rsvector<double> > const&,
std::vector<double,std::allocator<double> > const&, std::vector<double, std::allocator<double>>&, gmm::abstract_dense)
---
Внизу же вызывается какялибо функция из Lapack или BLAS.
Как узнать, какая именно?
Например, есть функция mult(x,y),
где x может быть вектором какого-либо сорта, вектором-строкой, вектором столбцом, заполненной матрицей, разреженной матрицей в одном формате, разреженной матрицей в другом формате и так далее. То же самое с у.
"Внизу" вызываются уже функции, специфичные для конкретных аргументов, из той или иной библиотеки. "Уровень вложенности" шаблонов для этого умножения большой.
Как проще всего узнать, что именно вызвалось на самом нижнем уровне и для каких аргументов?
Заранее спасибо.
>>>