Генерировать список методов C++, вызываемых из исполняемого файла
Есть ли способ генерировать список методов C++, вызываемых для исполняемого файла? У меня есть динамическая библиотека, и я хотел бы посмотреть, сколько методов вызывается из исполняемого файла. Я вижу, что методы C++ экспортируются через dumpbin или readelf. Однако когда я запускаю эти инструменты на исполняемом файле, который вызывает динамическую библиотеку, в списке отображаются только методы C и один метод C++. Есть ли что-то особенное в импорте C++?
2 ответа
Вы можете построить свою библиотеку и программу с профилированием, затем вы можете получить список всех вызванных функций (и сколько времени уходит на каждую функцию).
Вы также можете добавить ручное ведение журнала трассировки, то есть добавить вызов, который записывает в консоль в начале и конце каждой функции.
Профилирование, вероятно, самый простой и легкий путь. Посмотрите здесь для опции, необходимой при сборке, и, например, здесь для руководства программы gprof
необходимо для извлечения информации.
Вы можете использовать методы профилирования, например, скомпилировать всю программу с помощью -pg
флаг передан gcc
(и во время ссылки), затем используйте gprof
, (Существует также oprofile
).
Вы могли бы использовать ltrace
чтобы понять, что вызовы библиотеки сделаны.
Вас может заинтересовать эта статья об инструментах обратного проектирования.