是否有可用于可视化动态调用图的工具?我看到了一个用于Visual Basic 6的引用,但我想要一个用于.NET.
如果我必须自己构建一个可视化工具,我是否应该使用.NET分析API,或者我应该使用Mono.Cecil做什么?我开始用Cecil写一个CLI运行时,但我想如果我只是在程序集中注入调用图记录调用会更容易,尽管因为我不知道提前执行路径而且必须检测所有内容.
我正在对一个 18 岁的 pascal 程序进行维护。为了帮助我理解一切是如何组合在一起的,我想绘制一个调用图。但是我找不到任何可以为 pascal 源绘制调用图的软件。我目前正在使用 Turbo Pascal 7 并且不知道其他 pascal 编译器的能力。
我想知道是否有工具可以
最终,我希望根据线程在运行时(多线程代码覆盖工具)之间如何相互交互来进行代码覆盖,以便找到潜在的多线程错误.
如果我没有清楚地解释我的问题,我很抱歉,我很乐意提供任何细节.
我正在尝试生成一个全面的调用图(完成对Linux,运行时,批次的低级调用).
我已经使用"-fdump-rtl-expand"静态编译了我的源文件并创建了RTL文件,我将其传递给名为Egypt的PERL脚本(我相信是Graphviz/Dot)并生成了调用图的PDF文件.这完美无缺,完全没问题.
除此之外,有些调用显示为内置的库.我当时想看看是否有一种方法可以将调用图打印为不是打印出库中的实际调用?
如果问题不清楚,请告诉我.
基本上,我试图避免调用图生成<内置>
有没有办法做到这一点 ?
--------代码---------
#include <cilk/cilk.h>
#include <stdio.h>
#include <stdlib.h>
unsigned long int t0, t5;
unsigned int NOSPAWN_THRESHOLD = 32;
int fib_nospawn(int n)
{
if (n < 2)
return n;
else
{
int x = fib_nospawn(n-1);
int y = fib_nospawn(n-2);
return x + y;
}
}
// spawning fibonacci function
int fib(long int n)
{
long int x, y;
if (n < 2)
return n;
else if (n <= NOSPAWN_THRESHOLD)
{
x = fib_nospawn(n-1);
y …
Run Code Online (Sandbox Code Playgroud) 我从Google Play下载了一些Android应用程序.我Smali
通过逆向工程工具获得了代码apktool
.我想为这些应用程序生成调用图.我已经看到很多关于堆栈溢出和谷歌的链接,大多数建议的工具是c/c++
或者如果它们是Java
,他们需要我没有的源代码,当然.
有没有办法自动生成调用图?谢谢.
我有 C 和 C++ 项目,我想检查死函数(无法调用的函数),为此我想构建一个调用图并查看哪些无法从书面代码中访问。为此,我想使用带有“-S -emit-llvm”标志的 clang,这样我就可以创建一个点文件。我使用 autoconf 来编译项目,并且 autoconfig 无法识别已编译为可执行文件的文件。尝试使用这一行:
./configure --enable-debug --prefix=/opt/ibutils CC=clang CXX=clang++ CXXFLAGS="-S -emit-llvm"
Run Code Online (Sandbox Code Playgroud)
和这个
./configure --enable-debug --prefix=/opt/ibutils CC=clang CXX=clang++ CXXFLAGS="-S -emit-llvm"
LD="llvm-link"
Run Code Online (Sandbox Code Playgroud)
有谁知道原因吗?有建议我可以做什么吗?谢谢
这似乎是一个错误.链接到bugreport:https://bugzilla.gnome.org/show_bug.cgi ? id = 731363
我正在使用Doxygen 1.8.7和Graphviz 2.38.我将Doxygen配置为扫描更大的项目并将文档生成为HTML页面.
现在,我想要/需要那里的调用者/被调用的图形,并且我将每个与它有关的标志设置为"是".但结果仍然相同:对于4种方法,生成一个被调用/调用者图,但不生成其他方法.
我检查了Doxygen的日志文件,发现了4个这样的条目: Generating caller graph for function [...]
对于其他每个班级,只有 Generating docs for compound [...]...
有没有办法得到更详细的日志/原因为什么doxygen拒绝为函数生成调用者图表?
我的doxygen配置:
# Doxyfile 1.8.7
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = testproject
PROJECT_NUMBER =
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = "D:/path/to/outputdirectory"
CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \ …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有python-clang-3.6
库的静态分析工具,可以让我绘制函数调用图.
要正确创建,TranslationUnit
我需要使用相应的编译命令(即clang.cindex.Index.parse(c_file, compile_command)
).但是,我相信,为了能够正确互连,TranslationUnits
我还需要使用链接器命令来知道哪些TranslationUnit
使用其他功能TranslationUnits
.这是我的项目中的一个问题,实际上有多个二进制文件是使用单个"make"调用构建的,有些TranslationUnits
可能有冲突的符号名称,所以我不能假设它们都是相互连接的.
解决此问题的最佳方法是什么,以便我的工具知道C文件中的哪些函数可以调用其他C文件中的函数?
现在我看到两个选择:
clang
(至少是clang python库); 要么TranslationUnit
的AST树时,记住Header文件中函数声明的位置.如果由于宏处理,我会得到不同的行号或者具有不同的隐式函数声明,这个选项看起来很棘手TranslationUnits
.还有其他选择吗?哪个选项以及为什么会选择你?
我获得了 Python 代码及其导入的模块。我想建立一棵树来指示哪个函数调用其他函数。我怎样才能做到这一点?
我正在尝试为服务器生成调用图以用于文档目的.不适用于任何类型的分析.
我生成了输出:
sudo valgrind --tool=callgrind --dump-instr=yes /opt/ats-trunk/bin/traffic_server
Run Code Online (Sandbox Code Playgroud)
并转换为:http://code.google.com/p/jrfonseca/wiki/Gprof2Dot转换为.dot文件,但这包含太多信息,无法用作文档.
我想过滤掉对libc,libstdc ++,libtcl,libhwloc和诸如此类的库的调用.
nb:我一直在努力试图找出无用的库,但这看起来很麻烦且不完整.
非常感谢您提前的答案.