среда, 10 июля 2013 г.

Пара команд, которые время от времени бывают полезными при анализе программ:


Деманглирование имён C++:

$ c++filt _ZNSs4_Rep10_M_destroyERKSaIcE
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_destroy(std::allocator<char> const&)


Получение графа вызовов:

В gcc нет встроенной возможности получить граф вызовов, поэтому нужно установить утилиту egypt.

g++ -fdump-rtl-expand test.cpp
egypt --include-external test.cpp.*.expand > test_gcc_callgraph.dot
dot -Tpng -otest_gcc_callgraph.png test_gcc_callgraph.dot


В llvm можно просто воспользоваться ключиком:

clang++ -S -emit-llvm test.cpp -o - | opt -analyze -dot-callgraph
dot -Tpng -ocallgraph.png callgraph.dot

Комментариев нет:

Отправить комментарий