您的位置:首页 > 运维架构 > Linux

Linux后台C++开发知识点

2013-07-10 12:34 369 查看
作者:yurunsun@gmail.com
新浪微博@孙雨润 新浪博客
CSDN博客日期:2013年7月9日

linux后台开发需要熟练掌握哪些技能呢?

1. 内存泄漏

cpu wait% ↑
top: swap memory ↑
kswap进程
valgrid中malloc/free值
调用
mallinfo
输出当前所占内存
strace -p

2. 野指针

valgrid中access invalid address

3. 机器负载较高

内存泄漏:top
进程太多: vmstat 1
io阻塞:vmstat 1

4. 多线程

线程参数不能是局部变量
pthread_join或boost::thread::join等于waitpid, 调用者会阻塞
socketfd等资源无法共享
使用gcc -pthread 或者 -D_REENTERANT来解决全局变量重入问题

使用_r版本的库函数解决库函数重入问题

readelf -s /lib/libc-2.17.so | grep _r@

查看所有_r版本函数

互斥逻辑rcntl, flock, semaphere, mutex, rwlock
内存原子操作

5. TCP

状态转移图

CLOSED,
LISTEN,
SYN_RCVD,
SYN_SENT,
ESTABLISHED,
FIN_WAIT_1,
FIN_WAIT_2,
TIME_WAIT


为什么要三步握手
为什么要有TIME_WAIT

6. coredump

ulimit -c unlimited

gcc -g


gdb

gdb -c core bin
(gdb) bt
(gdb) l
(gdb) frame 0
(gdb) p this->m_value


7. 智能指针

scoped_ptr

shared_ptr

weak_ptr

enable_shared_from_this

noncopable


如果这篇文章对您有帮助,请到CSDN博客留言;
转载请注明:来自雨润的技术博客 http://blog.csdn.net/sunyurun
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: