Как сбросить дерево вызовов функций c кода в файл? - PullRequest
0 голосов
/ 10 февраля 2012

Может кто-нибудь подсказать мне, как построить дерево вызовов кода c Если кто-нибудь может предложить мне любой инструмент с открытым исходным кодом, я использовал func_tree, но он не отображает вызов функции и функцию макроса в макросах ... ??? ??

1 Ответ

0 голосов
/ 10 февраля 2012

Непосредственно перед компиляцией кода препроцессор C расширяет все ваши макросы.Это означает, что даже компилятор не может видеть определения макросов.К сожалению для вас, это означает, что нет никакой возможности включить макросы в трассировку вызовов функций.

В зависимости от того, насколько хорошо вы знаете среду выполнения, иногда вы можете подсчитать, где находятся фреймы трассировки стека из вашего текущегоположение в стеке.К сожалению, это часто уловка, когда точные детали работают только для одной среды.Вам необходимо повторно выполнить обнаружение семантики стека для каждой среды. Вот проект, который выполняет такую ​​технику , но невозможно определить, будет ли он очень полезен для вас.

Обратите внимание, что такая техника, скорее всего, также не будет отображать какой-либо компилятор в-линии, так как вызов функции переписывается, чтобы не существовать, когда компилятор помещает эквивалентный функциональный код в вызывающий блок.

Если вы не можете найти аналогичный проект с Google для вашей конкретной среды, выпридется написать самому.Если это вам не нужно, вам нужно выяснить, стоит ли изучать подробности низкоуровневой среды или лучше выполнять более надежную регистрацию.

...