编译调试
爱很遥远
事有其道
展开
-
GDB学习
最近调程序,用了下GDB,总结了一下基本的使用方法。 常用的gdb调试命令有 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或i) locals 查看当前栈帧局部变量的值 lis原创 2015-06-29 18:42:55 · 232 阅读 · 0 评论 -
Makefile学习
近期整理工程目录,不懂makefile真是头大,于是借这个机会学习了一下。主要是看陈皓的《跟我一起写makefile》博文,参考公司写的实际用法,把主要的点进行了摘抄。目前可以看懂别人写的makefile,并且自己可以写些简单的makefile文件,这让我对编译过程及整个代码架构有了进一步的认识。笔记和摘抄已经打印,就不粘贴了。原创 2015-07-18 16:52:22 · 268 阅读 · 0 评论 -
一个C语言函数声明和定义的编译问题
最近在看Redis代码,看到SDS字符串时,有个地方很诡异,代码如下: static inline size_t sdslen(const sds s) { struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); return sh->len; } static inline size_t sdsavail(const s原创 2016-04-24 16:53:13 · 2896 阅读 · 0 评论 -
linux环境下的内存泄漏检查
Linux下的mtrace工具可以帮助我们检查程序中是否有内存泄漏。GNU扩展函数mtrace会为内存分配函数(malloc, realloc, memalign, free等)注册hook,记录malloc/free信息。 使用时也非常简单,只需在代码中调用mtrace函数即可。这需要包含头文件mcheck.h。同时需要设置环境变量MALLOC_TRACE,指定信息输出到哪个文原创 2017-03-02 21:54:36 · 558 阅读 · 0 评论 -
如何定位CPU占用过高问题
程序运行后出现CPU占用过高,一般是代码有死循环等。top命令可以查看CPU使用情况,找到问题进程。 对CPU使用过高的进程的所有线程进行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu | grep xxx 得到CPU占用率最高的线程的线程号,比如2907进程的线程2909 使用gdb gdb gdb>attach 2907 gd原创 2017-04-01 09:27:09 · 2769 阅读 · 0 评论