我希望能够绘制存储过程的调用图.我对每个细节都不感兴趣,而且我并不关心动态SQL(尽管检测它并将其跳过可能很酷或者将其标记为这样.)
我希望工具生成我一棵树,给定的服务器名称,数据库名称,存储过程的名称,一个"调用树",其中包括:
希望很明显我追求的是什么; 如果没有 - 请问.如果没有可以做到这一点的工具,那么我想尝试自己写一个.Python 2.6是我选择的语言,我想尽可能多地使用标准库.有什么建议?
编辑:出于赏金的目的警告:SQL语法是COMPLEX.我需要一些可以解析各种SQL 2008的东西,即使它看起来很愚蠢.没有角落案件被禁止:)
编辑2:如果我缺少的是图形,我会没事的.
我主要是C和C++程序员,我经常需要快速理解非常大的代码库(gcc,linux内核)的结构.我想知道在这方面是否有任何工具可以提供帮助.我对调用图,整个项目的数据结构参考,包括依赖图,快速符号位置等特别感兴趣.我知道ctags和cscope,但我正在寻找具有更多可视化的东西,如调用图,可以快速定位定义函数的一部分,在特定的调用中根图形,反转它(即定位对给定函数的所有调用),等等.
我需要处理由其他人编写的相对较大的R代码.代码没有文档,它被分成无数个文件,每个文件都可以包含一个或多个函数.原作者没有使用Makefile,所以没有关于什么叫什么的文档.
作为第一步,我想建立一个树形图.我的意思是一个树,其根是主文件,内部节点是调用的各种文件,叶子(终端节点)是不调用其他文件中定义的函数的文件.有没有办法自动完成?图片输出会很棒,但即使是文本文件也可以.R Studio解决方案也可以.
编辑:显然我的描述不够清楚,因此我添加了一个非常简单(实际上是琐碎的)示例.假设我有4个源文件main.r,foo.r,bar.r和blargh.r,所有在同一文件夹(真正的情况下具有约50个文件中的所有"整齐"存储在相同的文件夹红润,与输入/输出文件一起).内容main.r是:
# main.r
source("foo.r")
source("bar.r")
source("blargh.r")
foo()
bar()
Run Code Online (Sandbox Code Playgroud)
foo.r:
# foo.r
foo <- function(){
print("I'm foo")
blargh()
}
Run Code Online (Sandbox Code Playgroud)
bar.r:
# bar.r
bar <- function(){
print("I'm bar")
blargh()
}
Run Code Online (Sandbox Code Playgroud)
blargh.r
# blargh.r
blargh <- function(){
print("I'm blargh")
}
Run Code Online (Sandbox Code Playgroud)
我需要生成的是这样的图表:
main.r
¦--foo.r
¦ ¦
¦ °--blargh.r
¦
°--bar.r
¦
°--blargh.r
Run Code Online (Sandbox Code Playgroud) 我有二进制A,这是一个带有附带符号的调试版本 - 很多年前构建的.我也有二进制B,没有附带符号的发布版本,并且更新.我要寻找从二进制符号匹配的最有效的方法一以二进制的潜在候选人乙.
鉴于调试版本要大得多(输入验证更多,打印更多内容stderr等等)并且函数总是随着时间的推移而变化,我认为尝试指纹各个函数将浪费时间.
因此,我已经决定 - 非常凭空,所以我可能会咆哮错误的树 - 指纹函数的最佳方法是创建两个二进制文件的调用图并尝试匹配顶点(即功能).
我已经做了一些预处理,所以我有以下数据结构:
# binary A
[[60, 60, 8734], # function 0 is called by functions 60 (twice) and 8734
[193, 441, 505], # function 1 is called by functions 193, 441 and 505
[193, 742],
[23],
[21],
[21],
[26],
[26, 1508, 1509, 1573],
[24],
[25],
...] # (~10k functions)
# binary B
[[8999], # function 0 is called …Run Code Online (Sandbox Code Playgroud) 目前,我正在使用xdebug profiler&KCacheGrind.但是GallGrind格式不存储完整的调用跟踪,只是父子调用跟踪(看看Kcachegrind/callgrind对于调度程序函数是不准确的?对于我所说的.)
有没有与可视化探查与全回溯可视化可用于PHP?
我看过了
- PHP Quick Profiler:但是,它需要添加太多代码而不需要可视化.
- phpCallGraph:其最新版本已于2009-08-06 (参考)修改.
如何使用安装了Graphviz的Doxywizard生成函数调用图?(我知道如何让doxygen为c函数生成调用和调用者图,但它没有帮助)
目前,我已经尝试了以下配置:http://pastebin.com/PjLjwjxU,但我无法在任何地方找到图表(我从未使用过该工具,所以它可能不是技术问题,但更多的是用户问题).
我能够使用gnu-cflow生成一个文件的调用图,但我无法找到如何使用cflow为多个文件生成调用图.
我试过跟随
cflow test.c,hello.c
它为test.c生成调用图,而不是为hello.c创建调用图
cflow test.c hello.c
它为hello.c生成调用图,而不是为test.c创建调用图
我不知道如何将多个文件传递给cflow.
对此有何想法?
你好ç
int
who_am_i (void)
{
struct passwd *pw;
char *user = NULL;
pw = getpwuid (geteuid ());
if (pw)
user = pw->pw_name;
else if ((user = getenv ("USER")) == NULL)
{
fprintf (stderr, "I don't know!\n");
return 1;
}
printf ("%s\n", user);
unused_function();
return 0;
}
int
main (int argc, char **argv)
{
if (argc > 1)
{
fprintf (stderr, "usage: whoami\n");
return 1;
}
return who_am_i ();
} …Run Code Online (Sandbox Code Playgroud) 在 Eclipse 中生成 android 应用程序调用图的可能工具有哪些?我想知道哪些方法可以相互作用……但我似乎找不到任何有用的东西。我读过一些关于 Oprofile 的内容,但很多人说它不起作用并且包含很多问题。我想在 android 中可视化我的代码以开发更好的应用程序。
谢谢
我刚开始使用 gprof 并试图生成调用图。我正在使用 cmake 来设置我的 makefile,我正在设置 CMAKE_EXE_LINKER_FLAGS = -gp 以启用分析。我唯一启用的 cxx 标志是 -g。
然后我简单地在我的 gmon.out 文件上调用 gprof。
生成的输出文件只有一个平面配置文件,其中的调用、自身 ts/call 和总 ts/call 都是空的。
更重要的是,它不会生成调用图。如果我尝试在运行 gprof 时显式提供 -q 以生成调用图,它会显示“文件缺少调用图数据”。
我不确定我在这里做错了什么,希望得到解决这个问题的指示。
谢谢。
例如我有以下 Perl 脚本
{
package A;
{
package B;
sub _y {
print "Just Another Perl Hacker\n";
}
}
sub _x {
print "Hello world!\n";
B::_y();
}
}
use strict;
use warnings;
_x();
Run Code Online (Sandbox Code Playgroud)
如何将带有包限定符的每个执行子打印到 STDERR 或任何日志文件?
例如,从上面的脚本中,我希望看到以下输出:
1 A::_x()
2 B::_y()
Run Code Online (Sandbox Code Playgroud)
我认为可以使用像 Devel::NYTProf 这样的调试器,但我还没有找到特定的调试器模块或它们的参数来完成这个简单的任务。
有任何想法吗?