
绘制函数调用关系图对理解大型程序大有帮助。我想大家都有过一边读源码(并在头脑中维护一个调用栈),一边在纸上画函数调用关系,然后整理成图的经历。如果运气好一点,借助调试器的单步跟踪功能和call stack窗口,能节约一些脑力。
不过如果要分析的是脚本语言的代码,那多半只好老老实实用第一种方法了。如果在读代码之前,手边就有一份调用图,岂不妙哉?下面举出我知道的几种免费的分析C/C++函数调用关系的工具。
函数调用关系图(call graph)是图(graph),而且是有向图,多半还是无环图(无圈图)——如果代码中没有直接或间接的递归的话。Graphviz是专门绘制有向图和无向图的工具,所以很多call graph分析工具都以它为后端(back end)。那么前端呢?就看各家各显神通了。
调用图的分析分析大致可分为“静态”和“动态”两种,所谓静态分析是指在不运行待分析的程序的前提下进行分析,那么动态分析自然就是记录程序实际运行时的函数调用情况了。
静态分析又有两种方法,一是分析源码,二是分析编译后的目标文件。
分析源码获得的调用图的质量取决于分析工具对编程语言的理解程度,比如能不能找出正确的C++重载函数。Doxygen是源码文档化工具,也能绘制调用图,它似乎是自己分析源码获得函数调用关系的。GNU cflow也是类似的工具,不过它似乎偏重分析流程图(flowchart)。
对编程语言的理解程度最好的当然是编译器了,所以有人想出给编译器打补丁,让它在编译时顺便记录函数调用关系。CodeViz(其灵感来自Martin Devera (Devik) 的工具)就属于此类,它(109版)给GCC 341打了个补丁。
另外一个工具egypt的思路更巧妙,不用大动干戈地给编译器打补丁,而是让编译器自己dump出调用关系,然后分析分析,交给Graphviz去绘图。不过也有人另起炉灶,自己写个C语言编译器(ncc),专门分析调用图,勇气可嘉。不如要是对C++语言也这么干,成本不免太高了。分析C++的调用图,还是借助编译器比较实在。
在Word或WPS界面下方有个“绘图”工具栏,自选图形中可以找到对应的图形,画出后,点右键选择“添加文字”即可。
还可以点那个鼠标指针形状的按钮,然后选中所有你画出的图形,右键选“组合”—“组合”即可你画出的东西合成一幅。
希望能对你有帮助。
一、调用Matlab引擎
调用Matlab引擎可以在WIN32、MFC中使用,它的原理实际上相当于打开一个精简版的Matlab然后往里面输命令。下面是调用Matlab中的加法程序addm的例子。
先在Matlab的work目录下创建addm文件并编写程序如下:
function s = add (a, b) s = a+b;在C程序中,首先打开精简版的Matlab
Engine ep = engOpen (NULL);
编译运行后,会自动打开一个命令行监控窗口,输入pwd就可以看到当前的工作目录,于是需要先将工作目录转换至存放addm的目录: engEvalString (ep, ”cd \\\\work”);
engEvalString是往Matlab里输命令的函数,显然我们的目标是成功运行: engEvalString (ep, ”s=add(a,b)”);
目前Matlab中并没有a和b两个变量,因此需要在C中初始化这两个变量并转换成Matlab基本变量类型mxArray,才能将它们输入到Matlab中。
windows画图可执行程序为mspaintexe
其加上文件名,可以直接打开图像
比如
mspaintexe
D:\testbmp
如果用C++调用,那可以用system
system("mspaintexe D:\\testbmp");
建议你可以这样画看看,打开迅捷画图,在跳转的页面你可以选择自己新建流程图,也可以直接套用模板进行编辑。
这时页面将跳转到新建的页面,在画布四周我们能看到有很多的工具栏,这样写在画流程图的时候都是需要用上的,需要给画布添加新的图形可以在左边基础图形里面选择图形直接用鼠标将图形拖曳至右边需要的位置就可以啦。
新的图形添加之后,需要用连接线将各图形进行连接。在左边基础图形里面可以选择需要的线条,在画布上方可以将线条的形状进行选择。
基本框架搭建完后,我们需要对里面进行内容的添加,双击文本框就可将内容进行添加。
双击画布空白处,在右边出现的菜单中可以对文本的排列以及样式和流程图的整体颜色进行更换。
这时一个完整的流程图就制作完成了,点击有上方的导出,在d出的菜单栏中选择自己需要的格式进行导出就可以啦。
其实画流程图的步骤很简单,我们选择好易上手的工具来帮助我们绘制流程图。而迅捷流程图制作软件就容易上手, *** 作也简单,下面就一起来看看怎么 *** 作的吧:
1、打开进入已经准备好的迅捷思维导图工具;
2、按要求选择对应的流程图图形绘制;
3、鼠标拖拽图形四周的三角形,连接另一个图形;
4、选择图形,在右边菜单中编辑流程图样式;
5、最后将制作完成的流程图保存就可以了;
以上就是关于函数调用关系图可以提供哪些与测试有关的信息全部的内容,包括:函数调用关系图可以提供哪些与测试有关的信息、怎么样画程序图、在C语言编程中,如何调用MATLAB的绘图功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)