Я пытаюсь возиться с некоторым кодом библиотеки, написанным на C++. Довольно сложное приложение находится поверх библиотеки. Чтобы возиться с кодом, мне часто нужно понимать, как функция библиотеки используется во всей кодовой базе, и убедитесь, что я не нарушаю ни один из последующих клиентов.Создание дерева всех возможных стеков вызовов
Предположим, что foo()
экспортируется из dll моей библиотеки. В клиентском коде bar()
звонки foo()
и baz()
звонки bar()
. Мне нужно убедиться, что bar
и baz
оба работают после моих изменений. В моем случае стек вызовов на самом деле довольно глубокий и нелегкий для ручной трассировки, поскольку нет одного стека вызовов, существует множество способов, которыми моя библиотечная функция может располагаться в верхней части стека вызовов.
С помощью Visual Studio или g ++ или clang существует способ генерации дерева, так что моя библиотечная функция находится в корне, а ветви - всевозможные способы, которыми моя функция может располагаться в верхней части стек вызовов? Я имею в виду, что такая функция уже существует в одной из популярных инструментальных цепей? Если нет, знаете ли вы какой-либо другой способ создания такого дерева?