状元郎是什么生肖| 为什么游戏| 祸害是什么意思| 羡字五行属什么| 享受低保需要什么条件| 减肥中午吃什么比较好| 吃番茄有什么好处| 什么人不能喝蜂蜜| 血压低有什么危险| 接待是什么意思| 黄泉路什么意思| 没有是什么意思| kpa是什么单位| 垂的第三笔是什么| 类风湿吃什么食物好| 是什么日子| 屁的成分是什么气体| 肾结石有什么表现症状| 犯法是什么意思| 牛油果是什么味道| 尿分叉是什么原因引起的| 高铁和地铁有什么区别| 下体有异味是什么原因| 有什么危害| 儿童用什么牙膏最好可以保护牙齿| 慢性阑尾炎吃什么药| 例假少是什么原因| h202阳性是什么意思| 大红袍适合什么季节喝| 卵巢检查做什么项目| 侧记是什么意思| 电解水是什么水| 上海市市委书记是什么级别| 手汗症挂什么科| 疏肝解郁喝什么茶| 藏是什么意思| 牙冠是什么意思| 内招是什么意思| 痛经是什么意思| 命门是什么意思| 宗人府是什么地方| 后入什么意思| 经常按摩头皮有什么好处| hpc是什么意思| 为什么头发总是很油| 神采什么| 茱萸是什么意思| 虾为什么叫对虾| 貔貅是什么生肖| VA什么意思| 胎盘低置状态是什么意思| 放疗后吃什么恢复的快| 表姐的儿子叫我什么| 四月十八日是什么日子| 梦见耗子是什么预兆| 综合体是什么意思| 28岁今年属什么| 饭后打嗝是什么原因| 认知障碍是什么病| 什么叫偏财| 香叶是什么树叶| 脱线是什么意思| 例行检查是什么意思| 龟头上有小红点是什么| 7.6是什么星座| 餐巾纸属于什么垃圾| 手掉皮是缺什么维生素| 欲盖弥彰是什么意思| 眼睛看东西变形扭曲是什么原因| 女人腰椎疼是什么原因| 什么样的伤口需要缝针| 吃苹果有什么好处和功效| 瓜子脸适合什么眼镜| 身体不出汗是什么原因| 青菜炒什么好吃| 38岁属什么| 类风湿关节炎不能吃什么食物| 90年是什么命| 荼靡是什么意思| 生气吃什么药可以顺气| 大学校长什么级别| 萎缩性鼻炎用什么药| 专科考研需要什么条件| 藜麦是什么| 薛之谦的真名叫什么| 你太low了是什么意思| 怔忡是什么意思| 什么蔬菜含维生素c最多| 荷尔蒙分泌是什么意思| 微创手术是什么| 淋巴结反应性增生是什么意思| 能人是什么意思| 办理身份证需要什么| 对食什么意思| 中医七情指的是什么| 身上长肉疙瘩是什么原因| 西瓜为什么是红色的| 国防部长什么级别| 六月二十三是什么日子| 440分能上什么大学| 微博会员有什么功能| 什么是回南天| 时间观念是什么意思| 为什么微信运动总是显示步数为0| 老年人腿脚无力是什么原因| 吃猪血有什么好处和坏处| 尿酸高可以喝什么饮料| 脚麻看什么科室最好| 早上起来嘴巴发苦是什么原因| 黄芪有什么功效| 随诊复查是什么意思| 产妇喝什么汤下奶最快最多| 塑料是用什么做的| 复刻什么意思| 导诊是干什么的| 旭五行属性是什么| 巨人观是什么意思| 实诚是什么意思| 梦见自己把蛇打死了是什么意思| 贫血缺什么| 中国国酒是什么酒| 可塑性是什么意思| 马代表什么数字| 急的什么| 阴虚火旺有什么症状| 着床是什么意思| 才美不外见的见是什么意思| 为什么手| 什么是正骨| 上梁不正下梁歪是什么意思| 过氧化氢一个加号什么意思| 胆碱酯酶低是什么原因| 事无巨细是什么意思| 膝盖痛挂什么科| 鼻涕带血是什么原因引起的| 6月6是什么星座| pdi是什么| 抽动症是什么原因引起的| 蔻依属于什么档次| 勤劳的小蜜蜂什么意思| 完了是什么意思| va是什么车牌| 入职体检前要注意什么| 八月出生的是什么星座| 作息时间是什么意思| 高血压2级是什么意思| 鱼扣是鱼的什么部位| 出煞是什么意思| 分分钟都妙不可言是什么歌| 突然的反义词是什么| 脓疱疮是什么原因引起的| 无意识是什么意思| 蔡英文是什么党派| 什么样的人容易孕酮低| 下午茶是什么意思| 什么样的普洱茶才是好茶| 脂溢性皮炎有什么症状| 胃窦是什么意思| 上海市市长是什么级别| 9月10号什么星座| 肆无忌惮的意思是什么| 尿路感染吃什么药消炎| c1能开什么车| 白酒兑什么饮料最好喝| 狗狗什么时候打疫苗| 翻新机是什么意思| 檄文是什么意思| 痢疾吃什么药| 什么运动可以让孩子长高| 营养包是什么| 万病之源是什么| 天方夜谭是什么生肖| 比围是什么| 郑和下西洋是什么朝代| 风疹是什么样子图片| 带状疱疹能吃什么食物| 淋巴细胞浸润是什么意思| sand是什么颜色| 宅男是什么意思| PSV是什么意思| 形态欠规则是什么意思| 舌苔厚腻吃什么药| 1987年属什么生肖| 双侧胸膜增厚是什么病| 什么车不能开| 脑血管痉挛吃什么药| 胃疼和肚子疼有什么区别| 钼靶检查是什么| 尿常规能查出什么病| 泡酒用什么容器好| 候场是什么意思| 什么是品牌| 肝做什么检查最准确| 胃炎吃什么| 吃什么能排毒体内毒素| 女人胯骨疼是什么原因| 7.7是什么星座| 膝盖发热是什么原因| 梦见偷桃子是什么意思| 11月27是什么星座| 利空什么意思| 7月份有什么节日吗| 切痣挂什么科| 为什么被蚊子咬了会起包| 上下眼皮肿是什么原因| 黄字五行属什么| 汇字五行属什么| 康复新液是什么做的| 塘角鱼吃什么食物| 世界八大奇迹分别是什么| 口淡无味是什么原因| 辗转什么意思| 最新病毒感染什么症状| 人体缺钙吃什么补最快| 怀男孩和女孩有什么区别| 脸上长斑吃什么药调理| 明天代表什么生肖| 尼龙属于什么材料| 985和211是什么意思| 白痰是什么原因| 复山是什么意思| 赶的偏旁是什么| 眉目的比喻义是什么| sars是什么意思| 尽形寿是什么意思| 卡介疫苗是预防什么的| 刺青是什么意思| 胡巴是什么| 锐字五行属什么| 炸东西用什么淀粉| 关节炎吃什么药好得快| 品牌logo是什么意思| 缺铁性贫血吃什么药| 手发胀是什么原因造成的| sat是什么考试| 红花泡脚有什么好处| 绚丽夺目的意思是什么| 人死了是什么感觉| 马赛克是什么意思啊| 其多列是什么意思| 梦见补的牙齿掉了是什么意思| 水鱼什么意思| dr股票是什么意思| 牙龈萎缩吃什么药见效快| 矫枉过正什么意思| 梦见李子是什么意思| 有什么| 五爷是什么菩萨| iss是什么意思| 儿童肠系膜淋巴结炎吃什么药| 二月初十是什么星座| 小鸭子吃什么| 什么地什么| bni是什么意思| 手痛挂什么科| 儿童拉肚子挂什么科| experiment是什么意思| 灯塔是什么意思| 吃什么对心脏最好| 体寒是什么意思| 后脑勺发热是什么原因| 右下眼皮跳是什么预兆| 冠字五行属什么| renewal什么意思| 百度Jump to content

[赛车时代] 20171227 房车自驾游

From Wikipedia, the free encyclopedia
A call graph generated for a simple computer program in Python.
百度 ”但是,“养在深闺”的科研成果,常常缺少带领它走向市场的“红娘”。

A call graph (also known as a call multigraph[1][2]) is a control-flow graph,[3] which represents calling relationships between subroutines in a computer program. Each node represents a procedure and each edge (f, g) indicates that procedure f calls procedure g. Thus, a cycle in the graph indicates recursive procedure calls.

Basic concepts

[edit]

Call graphs can be dynamic or static.[4] A dynamic call graph is a record of an execution of the program, for example as output by a profiler. Thus, a dynamic call graph can be exact, but only describes one run of the program. A static call graph is a call graph intended to represent every possible run of the program. The exact static call graph is an undecidable problem, so static call graph algorithms are generally overapproximations. That is, every call relationship that occurs is represented in the graph, and possibly also some call relationships that would never occur in actual runs of the program.

Call graphs can be defined to represent varying degrees of precision. A more precise call graph more precisely approximates the behavior of the real program, at the cost of taking longer to compute and more memory to store. The most precise call graph is fully context-sensitive, which means that for each procedure, the graph contains a separate node for each call stack that procedure can be activated with. A fully context-sensitive call graph is called a calling context tree. This can be computed dynamically easily, although it may take up a large amount of memory. Calling context trees are usually not computed statically, because it would take too long for a large program. The least precise call graph is context-insensitive, which means that there is only one node for each procedure.

With languages that feature dynamic dispatch (e.g. Java or C++),[5] first-class functions (e.g. Python or Racket), or function pointers (e.g. C), computing a static call graph precisely requires alias analysis results. Conversely, computing precise aliasing requires a call graph. Many static analysis systems solve the apparent infinite regress by computing both simultaneously.

Usages

[edit]

Call graphs can be used in different ways. One simple application of call graphs is finding procedures that are never called. Call graphs can act as documentation for humans to understand programs.[6] Call graphs can also be used to detect anomalies of program execution or code injection attacks.[7]

Software

[edit]

Free software call graph generators

[edit]

Run-time call graph (most of tools listed are profilers with call graph functionality)

[edit]
  • gprof : included in BSD or part of the GNU Binary Utilities
  • callgrind : part of Valgrind
  • KCachegrind : powerful tool to generate and analyze call graphs based on data generated by callgrind
  • Mac OS X Activity Monitor : Apple GUI process monitor Activity Monitor has a built-in call graph generator that can sample processes and return a call graph. This function is only available in Mac OS X Leopard
  • OpenPAT : includes the control_flow tool which automatically creates a Graphviz call-graph picture from runtime measurements.
  • pprof, open source tool for visualization and analysis of profile data, to be used in conjunction with gperftools.
  • CodeAnalyst from AMD (released under GPL)
  • makeppgraph is a dependency graph generator (at module level) for builds performed with makepp.
  • Intel(R) Single Event API (free, open-source)

Static for getting call graphs without running application

[edit]
C/C++
  • Sourcetrail creates a static call graph, that can be dynamically explored by the user. Also supports Python and Java
  • doxygen : Uses Graphviz to generate static call/inheritance diagrams
  • Cally: a tool that uses GCC's Register Transfer Language (RTL) files to build a caller or callee call graphs for C projects.
  • cflow : GNU cflow is able to generate the direct and inverted call graph of a C program
  • egypt : a small Perl script that uses gcc and Graphviz to generate the static call graph of a C program.
  • Analizo: calculates source code metrics, generates dependency graphs.
  • CCTree : Native Vim plugin that can display static call graphs by reading a cscope database. Works for C programs.
  • codeviz : a static call graph generator (the program is not run). Implemented as a patch to gcc; works for C and C++ programs.
  • calltree.sh : Bash shell functions that glue together cscope, graphviz, and a sampling of dot-rendering tools to display "caller" and "callee" relationships above, below, and/or between the C functions you specify.
  • tceetree : like calltree.sh, it connects Cscope and Graphviz, but it is an executable rather than a bash script.
Go
  • go-callvis : an interactive call graph generator for Go programs whose output can be drawn with Graphviz
Multi-language
  • callGraph : open-source call graph generator for awk, bash, basic, dart, fortran, go, lua, javascript, julia, kotlin, matlab, perl, pascal, php, python, R, raku, ruby, rust, scala, swift, tcl, and typescript.
.NET
  • NDepend :is a static analysis tool for .NET code. This tool supports a large number of code metrics, allows for visualization of dependencies using directed graphs and dependency matrix.
PHP, Perl and Python
  • Devel::NYTProf : a Perl performance analyser and call chart generator
  • phpCallGraph : a call graph generator for PHP programs that uses Graphviz. It is written in PHP and requires at least PHP 5.2.
  • pycallgraph Archived 2025-08-05 at the Wayback Machine : a call graph generator for Python programs that uses Graphviz.
  • pyan : a static call graph generator for Python programs that uses Graphviz.
  • gprof2dot : A call graph generator written in Python that converts profiling data for many languages/runtimes to a Graphviz callgraph.
  • code2flow: A call graph generator for Python and Javascript programs that uses Graphviz
  • rcviz : Python module for rendering runtime-generated call graphs with Graphviz. Each node represents an invocation of a function with the parameters passed to it and the return value.
XQuery

Proprietary call graph generators

[edit]
LDRA Testbed
Static and dynamic analysis engines for both host and embedded software, with a myriad of reports including call graphs.
Project Analyzer
Static code analyzer and call graph generator for Visual Basic code
Visual Expert
Static code analyzer and call graph generator for Oracle PL/SQL, SQLServer Transact-SQL, C# and PowerBuilder code
Intel VTune Performance Analyzer
Instrumenting profiler to show call graph and execution statistics
DMS Software Reengineering Toolkit
Customizable program analysis tool with static whole-program global call graph extraction for C, Java and COBOL
[edit]
Graphviz
Turns a text representation of any graph (including a call graph) into a picture.
tsort
Command-line utility that performs a topological sort.

Sample graph

[edit]

A sample call graph generated from gprof analyzing itself:

index    called     name                              |index    called     name
      72384/72384       sym_id_parse [54]             |       1508/1508        cg_dfn [15]
[3]   72384             match [3]                     |[13]   1508             pre_visit [13]
----------------------                                |----------------------
          4/9052        cg_tally [32]                 |       1508/1508        cg_assemble [38]
       3016/9052        hist_print [49]               |[14]   1508             propagate_time [14]
       6032/9052        propagate_flags [52]          |----------------------
[4]    9052             sym_lookup [4]                |          2             cg_dfn [15]
----------------------                                |       1507/1507        cg_assemble [38]
       5766/5766        core_create_function_syms [41]|[15]   1507+2           cg_dfn [15]
[5]    5766             core_sym_class [5]            |       1509/1509        is_numbered [9]
----------------------                                |       1508/1508        is_busy [11]
         24/1537        parse_spec [19]               |       1508/1508        pre_visit [13]
       1513/1537        core_create_function_syms [41]|       1508/1508        post_visit [12]
[6]    1537             sym_init [6]                  |          2             cg_dfn [15]
----------------------                                |----------------------
       1511/1511        core_create_function_syms [41]|       1505/1505        hist_print [49]
[7]    1511             get_src_info [7]              |[16]   1505             print_line [16]
----------------------                                |          2/9           print_name_only [25]
          2/1510        arc_add [31]                  |----------------------
       1508/1510        cg_assemble [38]              |       1430/1430        core_create_function_syms [41]
[8]    1510             arc_lookup [8]                |[17]   1430             source_file_lookup_path [17]
----------------------                                |----------------------
       1509/1509        cg_dfn [15]                   |         24/24          sym_id_parse [54]
[9]    1509             is_numbered [9]               |[18]     24             parse_id [18]
----------------------                                |         24/24          parse_spec [19]
       1508/1508        propagate_flags [52]          |----------------------
[10]   1508             inherit_flags [10]            |         24/24          parse_id [18]
----------------------                                |[19]     24             parse_spec [19]
       1508/1508        cg_dfn [15]                   |         24/1537        sym_init [6]
[11]   1508             is_busy [11]                  |----------------------
----------------------                                |         24/24          main [1210]
       1508/1508        cg_dfn [15]                   |[20]     24             sym_id_add [20]
[12]   1508             post_visit [12]               |

See also

[edit]

References

[edit]
  1. ^ Callahan, D.; Carle, A.; Hall, M. W.; Kennedy, K. (April 1990). "Constructing the procedure call multigraph". IEEE Transactions on Software Engineering. 16 (4): 483–487. doi:10.1109/32.54302.
  2. ^ Uday Khedker; Amitabha Sanyal; Bageshri Sathe (2009). Data Flow Analysis: Theory and Practice. CRC Press. p. 234. ISBN 978-0-8493-3251-7.
  3. ^ Pankaj Jalote (1997). An Integrated Approach to Software Engineering. Springer Science & Business Media. p. 372. ISBN 978-0-387-94899-7.
  4. ^ Ryder, B.G. (May 1979). "Constructing the Call Graph of a Program". IEEE Transactions on Software Engineering. SE-5 (3): 216–226. doi:10.1109/tse.1979.234183. S2CID 16527042.
  5. ^ Grove, David; DeFouw, Greg; Dean, Jeffrey; Chambers, Craig; Grove, David; DeFouw, Greg; Dean, Jeffrey; Chambers, Craig (9 October 1997). "Call graph construction in object-oriented languages". ACM SIGPLAN Notices. 32 (10). ACM: 108, 108–124, 124. doi:10.1145/263700.264352.
  6. ^ Eisenbarth, T.; Koschke, R.; Simon, D. (2001). "Aiding program comprehension by static and dynamic feature analysis". Proceedings IEEE International Conference on Software Maintenance. ICSM 2001. pp. 602–611. doi:10.1109/icsm.2001.972777. ISBN 0-7695-1189-9. S2CID 5934718.
  7. ^ Gao, Debin; Reiter, Michael K.; Song, Dawn (25 October 2004). "Gray-box extraction of execution graphs for anomaly detection". Proceedings of the 11th ACM conference on Computer and communications security - CCS '04. ACM. pp. 318–329. doi:10.1145/1030083.1030126. ISBN 1581139616. S2CID 1189805.
还是什么结构的字 孕妇无创检查是什么 衣原体感染男性吃什么药 区武装部部长是什么级别 用什么可以美白
为什么手臂上有很多很小的点 不能吃辛辣是指什么 一什么不什么 指导员是什么级别 中位数什么意思
什么是一体机 白细胞偏低是什么原因造成的 得逞是什么意思 冲奶粉用什么水比较好 rh因子阳性是什么意思
突然头晕是什么情况 性病是什么病 线下是什么意思 小腿红肿是什么原因引起的 刘备的儿子叫什么
放疗与化疗区别是什么sanhestory.com 湿疹有什么特效药hcv9jop6ns9r.cn 沸石为什么能防止暴沸hcv9jop4ns6r.cn 愈合是什么意思hcv8jop3ns9r.cn 果脯是什么东西hcv8jop2ns2r.cn
黄鼠狼是什么科aiwuzhiyu.com 6月3日是什么星座hcv8jop7ns3r.cn 01年属蛇的是什么命hcv9jop0ns1r.cn 鸡和什么属相最配对hcv7jop9ns0r.cn 心室早复极是什么意思hcv7jop5ns6r.cn
胃酸过多吃什么食物好hcv8jop2ns0r.cn 眉目传情什么意思bfb118.com 70是什么意思hcv8jop8ns6r.cn 交警支队长是什么级别hcv9jop0ns6r.cn 平安夜什么时候吃苹果hcv8jop9ns4r.cn
白带是什么味道hcv9jop6ns6r.cn 肛门疼痛什么原因hcv8jop7ns9r.cn 国家的实质是什么1949doufunao.com 什么叫公租房hcv9jop2ns7r.cn 兰花什么时候开花hcv8jop0ns6r.cn
百度