C
Check — 强大的c语言单元测试框架
5月17日
C 语言的单元测试框架,上 WikiPedia 可以查到很多。经过一番比较之后,选定 check 作为 c 语言的单元测试框架。Check 最主要的优点是对于每一个测试用例的运行都 fork 一个子进程,这么做的原因是因为 C 语言的独特性:
- 其它语言如 Java,Python,Ruby等,单元测试出错最多不过是抛出异常
- C 语言如果指针操作错误,乱指一气,可是会 coredump的。测试框架因此直接退出,用户是看不到任何返回的,只有郁闷的 coredump
- Check 的单元测试运行在 fork 的子进程中,可以避免测试框架由于 coredump 而崩溃,优点显而易见
但是在 Debian 上安装 check,示例代码竟然没有办法编译通过,陷入忙等待,显然是陷入了一个死循环。
Debian 上安装 check,部署了下列文件(只列出主要文件):
$ dpkg -L check /usr/include/check.h /usr/share/aclocal/check.m4 /usr/share/doc/check/examples/README /usr/share/doc/check/examples/Makefile.am /usr/share/doc/check/examples/configure.ac /usr/share/doc/check/examples/tests/check_money.c /usr/share/doc/check/examples/tests/Makefile.am /usr/share/doc/check/examples/src/money.c /usr/share/doc/check/examples/src/Makefile.am /usr/share/doc/check/examples/src/money.h /usr/share/doc/check/examples/src/main.c ...
将示例拷贝到工作目录,运行,陷入可怕的死循环! CPU 占用 100%:
$ cp -a /usr/share/doc/check/examples examples $ cd examples $ autoreconf --install -v autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal
我们在运行 autoreconf 时间使用了 -v 参数,看到发生死循环是在运行 aclocal 命令时。怎么办呢?
阅读全部内容 »

autotools系列工具—-自动生成Makefile
4月7日
在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.
Linux下C语言的调试
4月5日
调试是每个程序员都会面临的问题. 如何提高程序员的调试效率, 更好更快地定位程序中的问题从而加快程序开发的进度, 是大家共同面对的问题. 可能Windows用户顺口就会说出:用VC呗 :-) , 它提供了设置断点, 单步跟踪等的图形界面, 使调试起来直观易用. 但Linux用户可能要生闷气了 O:-) : 难道我们Linux程序员就只能使用原始的调试方法, 在代码中加入printf信息吗?难道Linux下就没有好的C语言调试工具吗?
当然不是了. GNU早就组织开发了一套C语言编译器(Gcc)和调试工具(Gdb). Gdb虽然没有图形化的友好界面, 但是它强大的功能也足以与微软的VC工具相媲美, 给Linux程序员带来了福音. 下面通过一个简单的例子, 演示一下Gdb的使用流程:

最新评论