请教大家~~如何迅速看懂一个大型的C++项目程序?

千阳 2012-08-16 10:16:02
我是一名C++初学者,老师给了我一个视频监控系统源代码,让我根据这个写出来一份概要设计,我看了两天也没什么头绪,求解大家教教我思路,万分感谢!
...全文
11890 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujinyong1986 2014-12-13
  • 打赏
  • 举报
回复
多问问老师,毕竟不是每个学生都有机会接触到大型项目的,多看看,多练练,对你以后从事这方面的工作很有帮助的,这其实是好事,看你自己怎么说了,你想天天混日子,到处玩当然觉得很难,你是研究生吧,要靠自学的,多问问老板,逮着他就问
猪翼天翔 2012-08-18
  • 打赏
  • 举报
回复
vim在linux上用得比较多,对于新手来说不如widows下的IDE好用。
1. 建议先尽量找人/文档了解下业务流程,不了解业务流程的情况下去看代码会痛苦死;
2. 了解程序模块级的设计结构,主要的数据流程。可以用工具如EA之类的将代码反向导出UML图,便于理解;
3. 对新手来说单步调试不太现实,大型的项目、加上多线程之类的、你还不了解业务。。。;
总之就是先了解业务流程,然后自顶向下。
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:
看多了就有经验了。
首先得有一个好的源码浏览工具,
比如vim
能够进行跳转查找等。

浏览代码首先得有一个框架上的概念, 看代码不要一味地跟进去,否则很可能会迷失在代码中。


由于要写概要设计,我只会wps,我就在win7平台上用2010看代码,vim我不会用。。。

请问还能提供一点比较实用的办法吗?
[/Quote]
ayw215 2012-08-18
  • 打赏
  • 举报
回复
看代码用sourceinsight
先吧程序跑起来,用熟,再调试,跟踪
羽飞 2012-08-18
  • 打赏
  • 举报
回复
我也是菜鸟,大家分享一下经验:
第一步:画出类图,把每个类的功能大概搞清楚;
第二步:流程图或者序列图,这个也是数据流向的
jiangshi061 2012-08-17
  • 打赏
  • 举报
回复 1
我也经历过类似的事情, 我在某大型企业实习的时候, 有一套OA软件, 直接把源代码扔给我让我改BUG,
怎么办?
1,首先搭建好调试环境,把代码装进IDE,然后编译通过。
2,在入口函数(main)的开头处打个断点,然后开始单步调试,你可以熟悉程序的功能结构。
3,对着程序界面,在使用程序的同时,在各个功能的方法中打断点,一个一个单步调试,你可以熟悉功能的分支流程,
4,每次调试的时候,都动手画一下流程图。
5,最后你会发现,整个工程的流程图,你已经画好了!
qicheng1111 2012-08-17
  • 打赏
  • 举报
回复 1
先了解程序的结构,各个模块是怎样分配的。再从程序的入口,即main函数之类的着手,用调式的方式走一走。
shen_wei 2012-08-17
  • 打赏
  • 举报
回复
可以自己按照流程走一走!!看看各个函数的功能。。
zhaoZero41 2012-08-17
  • 打赏
  • 举报
回复
我觉得先要搞清楚各个模块的功能,单步调试一下吧,弄清楚每个模块的功能,画出流程图。把大的框架搭起来后面的就好办了。如果只是写个概要设计,应该不用太纠结于细节问题。不过如果项目工程比较大的话,没有设计文档或者是比较详细的注释的话。。。比较麻烦 楼主加油吧
m筱米 2012-08-17
  • 打赏
  • 举报
回复 1
[Quote=引用 21 楼 的回复:]
新手遇上大型项目,有难度!

理出项目的骨架,不用拘泥于C++语法细节。
[/Quote]
++
而且大型项目的功能模块都分的很清楚,根据不同的功能模块,根据功能使用流程,跟断点,找到代码实现的地方。 不要拘泥于语法细节。
cbzjzsb123 2012-08-17
  • 打赏
  • 举报
回复
新手遇上大型项目,有难度!

理出项目的骨架,不用拘泥于C++语法细节。
chjj23 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 icechenbing 的回复:]
通常是先有概要设计,再有代码的。
你的老师逆转过来。不符合软件工程。
建议你拒出概要设计。
[/Quote]
这样做可能学到一些意外的东西。。。
恨天低 2012-08-17
  • 打赏
  • 举报
回复 1
通常是先有概要设计,再有代码的。
你的老师逆转过来。不符合软件工程。
建议你拒出概要设计。
whucv 2012-08-17
  • 打赏
  • 举报
回复
U使用nderstand 2.0代码分析工具
Understand是一款非常好用的代码分析工具,有很多实用功能。

可以新建一个项目,将你的代码工程添加进去,支持C++,C#,等N多种语言,可以更方便的对整个项目框架进行分析。

可以绘制很多的图:

Control Flow Graphics(流程图)

Calls(调用图)

Called By(补调用图)

Butterfly(蝴蝶图)

Depends On(依赖图)

Depended On By(补依赖图)

特别是流程图,非常有特色的说~~
xiakeliangjian 2012-08-17
  • 打赏
  • 举报
回复
先理清整个程序的框架,之后在找环境运行一遍,逐步分析,由模块到函数,多跟几次程序,建议不要在wps上看了,那样既痛苦又没效果。
翅膀又硬了 2012-08-16
  • 打赏
  • 举报
回复
单步调试一下吧。
mujiok2003 2012-08-16
  • 打赏
  • 举报
回复
新手遇上大型项目,有难度!

理出项目的骨架,不用拘泥于C++语法细节。
jinjianxinxh 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

如果只有源码没有文档的话,那你只能导入数据跟踪数据流了,弄清楚数据流的走向,各个模块的作用以及各个模块之间的交互,再画出系统框架,熟悉各个模块;
[/Quote]
++ 跟踪数据,理清模块
gongxujun 2012-08-16
  • 打赏
  • 举报
回复
首先要有个框架,不过这个没有经验很难搞
千阳 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
写概要设计,先把流程写出来。你不懂视频监控的流程。你再看代码都只是代码。你不了解到最表面的东西,框架是死的,只有根据业务的不同,你了解才更清楚,写相应的UML吧,你就知道大概走向了。
[/Quote]

UML怎么写,自己硬写吗?
千阳 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
如果只有源码没有文档的话,那你只能导入数据跟踪数据流了,弄清楚数据流的走向,各个模块的作用以及各个模块之间的交互,再画出系统框架,熟悉各个模块;
[/Quote]

我连调试都得折腾半天,这个数据跟踪流是不是难度有点大啊?
加载更多回复(12)
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质?你是否想成为一名资深开发人员,想开发别人做不了的高性能程序?你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹? 那么C++就是你个人能力提升,职业之路进阶的不二之选。【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署;2.吊打一切关于C++的笔试面试题;3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块基础篇本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。进阶篇本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。提升篇:本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧