ptpproxy - 转发 1588 二层组播报文

最近负责实现 1588 时钟同步客户端(OC 时钟功能),由于设计方案的原因,OC 和 主时钟之间有一个三层路由器,导致1588二层组播包无法通过。于是写了个程序,专门转发 1588 二层组播包。

miXpkg - DEB 打包程序

在使用 Raspberry Pi 时,有时候需要安装从源码编译的软件,但有时又不能直接在 RPi 上直接编译,那只能通过交叉编译环境先编译再上传到 RPi 上运行。可以将整个 –prefix指定的文件夹直接上传,但这样不好管理。因此就写了这个小程...

singleton pattern in c++

特点

使用 I.W.Y.U 整理头文件引用

C++ 的复杂性导致其编译速度极慢,特别是项目的代码量很大时尤为明显。通常为了提高编译速度往往是无所不用其极,pimpl,预编译,ccache,distcc分布式编译,尽量使用前置声明,去掉多余的头文件引用等。代码经过重构之后,很多头文件就不再需...

valgrind Memcheck 检测内存错误 - GDB

有时候结合使用 GDB 和 Valgrind 会非常有用,比如当出现了一个错误,用 GDB 附加到进程中以获得更多的信息。前面提到 程序是运行在 Valgrind 提供的模拟 CPU 上,所以不能直接附加到 Valgrind 的进程中,那就变成调...

valgrind Memcheck 检测内存错误 - 使用

说到 Valgrind,C/C++ 程序员恐怕没有谁没听说过它,要是如此真是 out了。Valgrind 是一个测试框架,它包含各种工具:

使用 strace+ 跟踪系统调用和信号

最近遇到了奇怪的现象,一个进程的物理内存使用量为 7MB 左右,但分配了250MB左右的地址空间,程序中没有映射大的文件。代码量太大,从源码找问题不现实,还好有 strace+ 这神器,它可以跟踪系统调用和各种信号,它收集到的信息还能保持高可读性...

使用 DUMA 检测 C++ 内存违规访问和内存泄漏

D.U.M.A 的全称是 Detect Unintended Memory Access,它是 Electric Fence 的加强版,可参考《使用 Electric Fence 检测内存越界操作》。它添加了如下特性:

mix static and dynamic linking

混合的使用静态库与动态库有时候很有用,比如第三方库只提供了静态库但你不想所有库都使用静态的,所以不能使用 -static 编译选项。反之也一样,不能为了几个动态库而使用 -shared 选项。再如,对性能敏感的模块使用静态编译可以提升性能,对性能...

getconf 查看系统变量

getconf 是 glibc 带的一个命令,可以用来查看使用 sysconf,pathconf和confstr函数设置的各种变量和路径的值。例如:PATH 路径,OS 字大小 LONG_BIT,内存页大小 PAGESIZE等变量。