V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuguangxuan
V2EX  ›  C++

不懂就要问:阅读他人代码的时候,有什么工具可以画出函数或者类之间的层级调用关系?

  •  
  •   liuguangxuan · 2020-06-25 17:58:31 +08:00 · 6576 次点击
    这是一个创建于 1611 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在阅读他人的项目代码时,都是徒手在 A4 纸上画出类或者函数之间的调用关系,来梳理出来逻辑。想请问一下各位老哥,有没有好用的工具可以使用?

    目前用的开发工具是 Clion,C++项目。

    如果各位老哥有更好的阅读项目代码的经验可以传授,感激不尽。

    19 条回复    2020-08-13 20:56:34 +08:00
    zyzhang
        1
    zyzhang  
       2020-06-25 18:02:25 +08:00   ❤️ 3
    source insight
    hankai17
        2
    hankai17  
       2020-06-25 18:06:17 +08:00   ❤️ 2
    source insight
    hejingyuan199
        3
    hejingyuan199  
       2020-06-25 19:24:34 +08:00   ❤️ 1
    感谢楼上两位的推荐,太棒了。可是我一看价格 239 美元。这么贵?有便宜的办法吗?
    pezy
        4
    pezy  
       2020-06-25 19:35:20 +08:00   ❤️ 2
    sourcetrail
    Hallujah
        5
    Hallujah  
       2020-06-25 20:06:46 +08:00 via Android   ❤️ 3
    Mindjet
        6
    Mindjet  
       2020-06-25 20:09:30 +08:00
    想到几点:
    1. 用 UML 建模,相关软件有很多
    2. IDEA 等 IDE 是有这个功能的,能够自动化绘图
    3. 纸其实也有很大优势,非常随意,做做草图比大多软件都好用,如果不喜欢纸张可以用数位板
    hejingyuan199
        7
    hejingyuan199  
       2020-06-25 20:50:54 +08:00
    @Hallujah 哈哈。我买了个大白板,在写字台旁边。大白板超级爽的。
    liuguangxuan
        8
    liuguangxuan  
    OP
       2020-06-25 21:11:28 +08:00
    @pezy #4 感谢大佬推荐。咋一看 ID 好熟悉,才发现当初是看着您的 GitHub 把《 C++ Primer 》刷了一遍。没想到在这儿能碰到。
    liuguangxuan
        9
    liuguangxuan  
    OP
       2020-06-25 21:21:19 +08:00
    @Mindjet #6 感谢推荐
    Newyorkcity
        10
    Newyorkcity  
       2020-06-25 22:53:54 +08:00
    @Mindjet idea 有这个功能?能具体说下吗?
    nightwitch
        11
    nightwitch  
       2020-06-25 23:57:43 +08:00

    Sourcetrail
    nightwitch
        12
    nightwitch  
       2020-06-25 23:58:29 +08:00
    续上楼,开源免费
    yanqiyu
        13
    yanqiyu  
       2020-06-26 00:01:28 +08:00 via Android
    打个断点看调用栈也不失为一种通用方法...
    nuk
        14
    nuk  
       2020-06-26 00:20:53 +08:00
    IDA,debug 可以直接记录指令流。。。
    12tall
        15
    12tall  
       2020-06-26 08:20:26 +08:00
    IDEA?
    jakezh
        16
    jakezh  
       2020-06-26 09:58:58 +08:00
    Sourcetrail +1
    XanderChen
        17
    XanderChen  
       2020-06-26 13:02:40 +08:00
    或者你干脆开个思维导图,一边梳理一边做导图,
    imBossa
        18
    imBossa  
       2020-06-27 15:26:47 +08:00
    @Mindjet idea 有这个功能?能具体说下吗?
    hardwork
        19
    hardwork  
       2020-08-13 20:56:34 +08:00
    自动调用图表?没这么智能的 ide 吧,有很多运行时决定的调用关系根本没法静态全分析吧。
    看代码只要有全局搜功能,声明,实现跳转,find all reference 这些功能就够了,这个任何 ide,或编辑器像 vscode 加个插件就能实现了。
    其它的分析还是要靠理解,文档,业务逻辑和调试日志了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 21:11 · PVG 05:11 · LAX 13:11 · JFK 16:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.