首页 › 分类存档 › 未分类

GDB使用小结

  列位安好。简单总结下GDB调试器的使用。

准备

默认情况下,gcc/g++编译的可执行文件是不包含调试信息的,GDB是一个源代码级的调试器,使用GDB调试程序需要程序的源代码、符号及 其对应的行号等,其中符号和行号可以是单独的文件,亦可以在编译时嵌入到可执行文件中。使用gcc/g++时使用-g选项即可将必要的调试信息包含到可执 行文件中,使用-g3选项还可以将源代码中的宏信息也包含进去。
另外,调试过程中需要随时查看源代码,但源代码并没有包含到可执行文件中。通常GDB在当前目录查找源文件,但某些情况下(比如调试系统命令)需要手动指明源代码的查找目录,directory ~向GDB指明到$HOME下查找源文件。
继续阅读 »

浅析epoll – epoll例子以及分析

上篇我们讲到epoll的函数和性能。这一篇用用这些个函数,给出一个最简单的epoll的例子。
继续阅读 »

浅析epoll – epoll函数深入讲解

前一篇大致讲了一下epoll是个什么东西,优点等内容,这篇延续上一篇的内容,主要是分析epoll的函数,epoll高性能的深入分析。

继续阅读 »

浅析epoll-为何多路复用I/O要使用epoll

epoll是Linux下 多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符 集 合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符 集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的电平触发 (Level Triggered)外,还提供了边沿触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。Linux2.6内核中对/dev/epoll设备的访问的封装(system epoll)。

这个使我们开发网络应用程序更加简单,并且更加高效。

继续阅读 »

想要不加班,就先丢掉这7样东西…

如果你的工作似乎总是做不完,每天都要加班,即使到了周末,也不能休息,还要拖着疲惫的身体继续去公司上班,你就需要停下来好好地思考自己的工作方法是否出了错误?连续加班,不仅工作效率低下,而且长期的疲累加班会影响身体健康,甚至因为工作压力,有性命之忧。

继续阅读 »

Linux socket编程(五) 文件传输

这一篇给之前写的聊天室再加上文件传输。
继续阅读 »

Linux socket编程(四) 简单聊天室之epoll版

这一篇我们用epoll改写之前写的简单聊天室,Epoll是Linux内核为处理大批量句柄而作了改进的poll。
继续阅读 »

Linux socket编程(三) 简单的多线程聊天室

要用到多线程以及线程的读写锁,之前写的Socket类、ServerSocket要做相应的改变

因为服务器端要维持着一个存储客户端Socket信息到数据结构,当多个线程同时访问这个结构时,要做同步处理,所以要在适当的时候加上读锁或写锁。

继续阅读 »

Linux socket编程(二) 服务器与客户端的通信

上一篇写了对套接字操作的封装,这一节使用已封装好的Socket类实现服务器与客户端的通信(Socket的定义见上篇Socket.h)

继续阅读 »

Linux socket编程(一) 对套接字操作的封装

以前写的,现在回顾一下:

下面是对socket操作的封装,因为在Linux下写中文到了windows里面会乱码,所以注释用英文来写,有空再查下解决方法吧 继续阅读 »