免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4227 | 回复: 10
打印 上一主题 下一主题

[Linux] 大家是怎么调试源码的,别人的应用程序源码,不是内核源码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-19 15:43 |只看该作者 |倒序浏览
5可用积分
大家是怎么调试源码的,别人的应用程序源码,不是内核源码。


我知道先make之后用gdb调试,但用gdb命令行调试用不惯啊,

想导入到eclipse中调试,不会啊!我在另一个帖子问的问题,也没人回答,上一个帖子http://bbs.chinaunix.net/thread-3771714-1-1.html

既然eclipse调试没人回答,那干脆问问大家是怎么调试别人的应用程序源码的?有什么好方法没,不要吝啬告诉俺啊!

最佳答案

查看完整内容

本人读了很多C开源服务端代码, 有自己的一些感受:1, 代码依据的算法与原理需要先搞懂, 比如你看lighttpd/nginx/apache, 你都不知道http协议就很难看下去, 这就要求你起码做过lamp的开发, 对http/cgi/fcgi有一个应用级别的认识, 之后才能具体到代码里去探究实现.2, 先把程序用熟练, 各种命令行参数都用一用, 程序的配置文件大致知道是什么格式, 都能配置些什么参数.3, 开始看外围代码, 比如: 网络I/O Event框架, chunk Buffer, 内存 ...

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-09-19 15:43 |只看该作者
本人读了很多C开源服务端代码, 有自己的一些感受:

1, 代码依据的算法与原理需要先搞懂, 比如你看lighttpd/nginx/apache, 你都不知道http协议就很难看下去, 这就要求你起码做过lamp的开发, 对http/cgi/fcgi有一个应用级别的认识, 之后才能具体到代码里去探究实现.

2, 先把程序用熟练, 各种命令行参数都用一用, 程序的配置文件大致知道是什么格式, 都能配置些什么参数.

3, 开始看外围代码, 比如: 网络I/O Event框架, chunk Buffer, 内存池, 数据结构(nginx rbtree), 这样一方面为将来看核心主干代码打好基础, 免得不断的回头翻, 一方面也是熟悉作者的行文风格, 而且也可以学习一下人家的代码设计风格, 主要还是因为外围代码难度小, 独立性高, 足够模块化.

4, 核心代码从main走起, 这个过程很痛苦, 因为最难的就是把整个程序逻辑串起来, 最终达成系统化的认识, 抓住框架, 忽略细节, 这是需要一点功力的. 建议放平心态, 一步一步钻, 看这部分是一定很痛苦的, 但也一定是痛苦并享受的, 每次突破一点就会很兴奋. 但开源代码一定要习惯这样一个心态, 即你不可能看到哪就看懂, 一定是拖着现在看不懂的, 往后面看新的, 一直到前后可以串联起来.


如果是身边同事的代码, 一样的道理, 先学会用程序, 搞清楚程序用了什么原理, 干了什么事, 然后再根据现象看本质(代码)就会简单很多.  同事的代码和开源代码比其实简单多了, 一方面代码量小, 一方面都是凡人, 读代码的同时会深刻的感觉到作者每一步是想干什么, 但开源代码一般比较大, 而且非常精致, 就需要费很多劲去体会作者的意图.

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2012-09-19 15:57 |只看该作者
回复 1# chinesefys


    用 GDB 调试。

论坛徽章:
0
4 [报告]
发表于 2012-09-19 17:02 |只看该作者
回复 3# linux_c_py_php

非常感谢,尤其是看不注释的代码,更痛苦!
还想请教 linux_c_py_php ,您是用什么工具阅读代码的?
   

论坛徽章:
0
5 [报告]
发表于 2012-09-19 17:03 |只看该作者
回复 2# MMMIX


   gdb很强大,看样子我还是得用gdb

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
6 [报告]
发表于 2012-09-19 17:10 |只看该作者
source insight, 看熟了就丢到Linux里改代码打印点东西玩玩了.


chinesefys 发表于 2012-09-19 17:02
回复 3# linux_c_py_php

非常感谢,尤其是看不注释的代码,更痛苦!

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
7 [报告]
发表于 2012-09-19 17:12 |只看该作者
还有, 你还是看少了, 开源代码哪有注释哪有文档? 就是锻炼你的读代码能力, 读多了自己掌握了设计能力, 看代码就不再是一件痛苦的事了, 但也不意味着没有挑战.

linux_c_py_php 发表于 2012-09-19 17:10
source insight, 看熟了就丢到Linux里改代码打印点东西玩玩了.

论坛徽章:
0
8 [报告]
发表于 2012-09-19 17:23 |只看该作者
回复 7# linux_c_py_php

嗯,谢啦,沉下心来看代码,吼吼!

   

论坛徽章:
125
处女座
日期:2014-06-14 02:20:38双子座
日期:2014-06-14 03:59:12处女座
日期:2014-06-14 04:14:31狮子座
日期:2014-06-14 05:24:38巳蛇
日期:2014-06-14 05:48:58巨蟹座
日期:2014-06-14 05:50:18摩羯座
日期:2014-06-14 06:23:58双鱼座
日期:2014-06-14 06:49:15亥猪
日期:2014-06-14 07:04:56巨蟹座
日期:2014-06-14 07:12:32双子座
日期:2014-06-14 07:26:53射手座
日期:2014-06-14 07:58:51
9 [报告]
发表于 2012-09-20 14:42 |只看该作者
gdb调试         

论坛徽章:
125
处女座
日期:2014-06-14 02:20:38双子座
日期:2014-06-14 03:59:12处女座
日期:2014-06-14 04:14:31狮子座
日期:2014-06-14 05:24:38巳蛇
日期:2014-06-14 05:48:58巨蟹座
日期:2014-06-14 05:50:18摩羯座
日期:2014-06-14 06:23:58双鱼座
日期:2014-06-14 06:49:15亥猪
日期:2014-06-14 07:04:56巨蟹座
日期:2014-06-14 07:12:32双子座
日期:2014-06-14 07:26:53射手座
日期:2014-06-14 07:58:51
10 [报告]
发表于 2012-09-20 14:43 |只看该作者
或者到处加printf      
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP