中级农民
- 积分
- 143
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2011-1-26
- 最后登录
- 1970-1-1
|
注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 slaink 于 2012-4-20 10:38 编辑
想发编程算法的,可惜俺积分太低……(另外吐槽一下那个橙色的字体,每次我都看不到呢……)
基础性的书籍我就不分享了,主要是实践中需要的一些工具以及书籍。断断续续写了一年C代码了,虽然还是水货一个,但是还是能分享点东西的(其实真的不多……)。
不知道对大家有没有帮助……(别当水贴就成)
再吐个槽,要是这里支持markdown就好了~
1.书籍
C traps and pitfalls
http://www.evernote.com/shard/s1 ... 93094accde88babdf03
这本很推荐,写代码之后看很有共鸣,很多很容易出的错误,虽然是老书(貌似那个时候C的ANSI还没有定下来呢)但是很推荐。
OOC
http://www.planetpdf.com/codecuts/pdfs/ooc.pdf
这本正在看,过些日子重新大改代码可能用得到,讲的是使用面向对象的方式进行C编程(还是害怕C++的低效,毕竟做的是FS,虽然用户态)。
2.代码调试
2.1 GDB 对于我等使用linux的,当然没有什么IDE好用(Code::Block什么的也有啦),所以就得学习gdb的使用,事实上GDB用好了还是不错的。GDB下载就不需要提供了吧,linux都能找到,win的话是否需要cygwin才能用我不太清楚。
没试过GDB的话建议尝试一下,挺好用的,基础的命令这里说一下吧(我常用的):- break <function name or line number> 下断点
复制代码 (支持条件断点例如, break 39 if a == 1 就是当a=1时候在L39断一下)- display <variable or expression> 监视某个东西(作用域内会一直显示)
复制代码- print <variable or expression> 显示某个东西
复制代码 (只显示一次,如果用赋值语句的话还能修改变量的值)- l <funcion or line number or null> 显示代码 多次点l可以顺序显示
复制代码 watch <variable> 监视变量,当变量修改的时候下断点
(同样还有awatch什么的,可以设置是修改变量或者访问变量的时候断)
我常用的貌似就这些,还有设置多线程并行方式什么的都是查到了才用的……忘记了。
另外这个可以attach process的,使用就行了,适合调试daemon什么的。
GDB的进阶可以这里找到:
GDB Documentation:http://www.gnu.org/software/gdb/documentation/
Debugging with GDB: http://sources.redhat.com/gdb/current/onlinedocs/gdb.html
2.2 Valgrind
这个绝对神器,检测race condition,memory leak什么的巨好用。不过是命令行的,官方有QT写的前端,叫什么忘记了Valk神马的。
基础命令的话就是- valgrind --leak-check=full --track-origins=yes <program name and arguments>
复制代码 这个命令算是常用得了,可以检测memory leak,并且可以搜索到产生错误的源头(那个--track-origins不一定对,我都是自动补全的)。产生的错误精确到行,比如说使用了未初始化的变量,或者数组越界,还有对某指针malloc之前其实本身指向了一块儿没有free的内存什么的,还能告诉你那个未初始化的变量、没释放的内存是哪儿申请的。程序结束之后也会给你一个清单都有哪些内存申请了,释放了哪些,没释放的都在哪里。对于我这种编程不怎么细心的很好用。
这个东西可以在官网上 http://valgrind.org/ 找到下载以及用户文档
3.3 静态代码检测工具
同样因为没有IDE,所以同样需要找其他开源工具实现。GCC直接加-WALL可以获得很多静态检查的建议,如果不喜欢GCC,也有很多第三方开发的,我用的是伯克利的那个,其实老的有sprint(就是LC-lint,但是太老了,看最后更新是好几年前了)。
从这里可以找到一些静态检查工具:http://spinroot.com/static/
4.乱七八糟
4.1 StackOverFlow
强烈推荐,注册个帐号之后,就提问吧,基本都能找到答案(我很难得的提了几个没人知道的~)
暂时到这里……再用到什么东西会来分享的。
有谁用过上面东西,有什么心得也欢迎告诉我啊~真心期待大牛说点经验的。 |
上一篇: [数据结构] 学习资料汇集下一篇: 分享一个练习编程的网站
|