Я пытаюсь сгенерировать граф вызовов, с помощью которого можно узнать все возможные пути выполнения, попадающие в конкретную функцию (чтобы мне не приходилось вычислять все пути вручную, так как существует множество путей, ведущих к этой функции ). Например:
path 1: A -> B -> C -> D
path 2: A -> B -> X -> Y -> D
path 3: A -> G -> M -> N -> O -> P -> S -> D
...
path n: ...
Я пробовал Codeviz и Doxygen, так или иначе, оба результата не показывают ничего, кроме вызываемых объектов целевой функции D. В моем случае D является функцией-членом класса, объект которого будет заключен в интеллектуальный указатель. Клиенты всегда будут получать объект интеллектуального указателя через фабрику, чтобы вызвать D.
Кто-нибудь знает, как этого добиться?
Pass::print not implemented for pass: 'Print call graph to 'dot' file'!
Что с этим делать? лязг 3.8 11.09.2015-analyze
. Еще один вопрос: могу ли я установить для выходного файла имя, отличное от./callgraph.dot
? 11.09.2015if-then-else
и циклахfor
и[do-]while
? 31.03.2016opt
иclang
исходят из одной и той же версии llvm (один и тот же путь)! 28.04.2016/usr/lib/llvm-3.4
и/usr/lib/llvm-3.5
, поэтому, если я перепутаю/usr/lib/llvm-3.4/clang++
с/usr/lib/llvm-3.5/opt
, будет ошибка, но если я использую/usr/lib/llvm-3.5/clang++
и/usr/lib/llvm-3.5/opt
вместе, все будет работать нормально. Вы можете использовать командуwhich
, чтобы проверить путь для команды, попробуйтеwhich opt
иwhich clang++
. 31.05.2016