自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

转载 LINUx 信号摘要

10 Signals1 Introduction & ConceptsSignals是一种软件中断,通知程序某种事件的发生。常见的Signal有SIGABRT(当进程调用abort函数的时候自动发送), SIGALRM(当timer被触发的时候自动发送),等等。下面的情况可以产生Signal:1.     按下CTRL+C产生SIGINT2.     硬件中断,如除0,非法内存

2015-07-20 17:12:12 252

原创 内存出错信号处理例子 void signal_handler()

signal(SIGSEGV,set_on_segment_fault); void set_on_segment_fault(int sig){struct sigaction act;memset(&act, 0, sizeof(act));act.sa_flags = SA_SIGINFO;act.sa_sigaction = handler;sigactio

2015-07-20 17:01:45 564

转载 C语言函数调用栈剖析

理解调用栈最重要的两点是:栈的结构,EIP/EBP/ESP寄存器的作用。1.栈结构首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低。2.EIP/EBP/ESP寄存器对x86体系的CPU而言,在函数调用过程中,系统会用到下面三种寄存器:1.EIP寄存器里存储的

2015-07-20 16:46:14 280

原创 Linux下利用backtrace追踪函数调用堆栈以及定位段错误

通常情况系,程序发生段错误时系统会发送SIGSEGV信号给程序,缺省处理是退出函数。我们可以使用 signal(SIGSEGV, &your_function);函数来接管SIGSEGV信号的处理,程序在发生段错误后,自动调用我们准备好的函数,从而在那个函数里来获取当前函数调用栈。举例如下:#include #include #include #include #i

2015-07-20 15:27:15 709

原创 backtrace&&backtrace_symbols 查找段错误 打印堆栈信息

backtrace系列函数:使用范围适合于没有安装GDB或者想要快速理清楚函数调用顺序的情况backtrace系列函数1.Function: int backtrace (void **buffer, int size)//用来获取堆栈信息。size需要获取的堆栈层次,该函数返回返回值是实际获得的堆栈层次2.char ** backtrace_symbols (void *

2015-07-20 15:08:15 1016

原创 abstractserver.cpp

#define TCP 0#define UDP 1#define THREAD_STACK_SIZE 1*1024*1024//using namespace std//using  std::string;typedef struct client_t{int sockfd;}myclient;class abstractserver{pub

2015-07-14 08:53:39 275

原创 makefile 适用中小项目,cpp & c --- wjd test

### wjd test for makefile 适用中小项目,cpp  & c ####TARGET=mybinCUR = ${shell pwd}CROSS_COMPILE=FTPDIR = $(CUR)/ftpSOURCES_CPP += $(wildcard $(CUR)/*.cpp $(CUR)/*.c)SOURCES_C += $(wildcard $

2015-07-13 17:44:42 293

原创 base 64 加密解密 for test demo

#ifndef BASE64_H_#define BASE64_H_//=============================================================================// Base64 Encoding and Decoding //////=====================================

2015-07-13 11:26:45 369

转载 recv 和 send 函数分析

int send( SOCKET s, const char FAR *buf, int len, int flags );不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 该函数的第一个参数指定发送端套接字描述符; 第二个参数指明一个存放应用程序要发送数据

2015-07-11 09:38:41 341

原创 线程消息队列 示例

#include#pragma once#ifdef LINUX#include #else#endif#define APP_OK 0#define APP_FAIL -1#define IN_QUEUE 1#define OUT_QUEUE 0#define MAX_QUEUE 256typedef struct pm

2015-07-10 17:13:44 447

转载 Linux进程地址空间与虚拟内存

分类: unix/linux unix环境高级编程2013-10-14 15:52 489人阅读 评论(0) 收藏 举报32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。进程的地址空间存在于虚拟内存中。虚拟内存不能被禁用。进程地址空间进程地址空间分为内核空间和用户空间  因为每个

2015-07-09 23:59:43 665

转载 内存溢出攻击分析

2012-07-27 08:54 2592人阅读 评论(0) 收藏 举报cmd语言character工作buffer扩展什么是内存溢出?简单的说,内存溢出就是程序向内存写入了比分配更多的空间更多的内容。攻击者据此控制程序执行的路径,冒名执行它的代码。对那些好奇这一切都是如何发生的人,本文试图详细介绍攻击的实现机制并提出一些预防措施。从我们知道的经验来看,大多都听说过这些攻击,但

2015-07-09 18:44:14 409

转载 Linux开发中常见段错误问题原因分析

分类: Linux 嵌入式Linux C和C++2012-09-22 20:35 1701人阅读 评论(0) 收藏 举报linux多线程socket平台stringc1 使用非法的内存地址(指针),包括使用未经初始化及已经释放的指针、不存在的地址、受系统保护的地址,只读的地址等,这一类也是最常见和最好解决的段错误问题,使用GDB print一下即可知道原因。 2 内存读

2015-07-09 18:27:25 371

转载 学习视频技术论坛

学习视频技术论坛分类: 多媒体2011-06-20 11:00 896人阅读 评论(0) 收藏 举报http://www.chinavideo.org/archiver/

2015-07-09 16:03:16 619

转载 LINUX GDB调试实例

分类: Linux2011-07-05 00:14 604人阅读 评论(0) 收藏 举报linux程序调试工具工具图形unixcgi————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓

2015-07-09 15:30:53 395

转载 linux 获取本地网络信息 -ip,mac ,等

struct ifconf这个结构是在哪个头文件定义#include 其实你可以find /usr/include/ -name "*.h" -exec grep -l "ifconf" {} \; (  grep  -l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。 )在linux下c语言获取本机ip地址的函数

2015-07-08 19:20:45 567

原创 域名解析为ip地址

int GetIpByDomainName(const char *DName,unsigned char* ipaddr){struct hostent *phost;if(NULL == DName){//DBG_ERR("DOMAIN NAME IS NULL\r\n");return APP_FAIL;}if((phost = gethostbyna

2015-07-08 18:57:55 841

原创 可参考的典型的TCP client class

class abstractclient{public:SOCKET msockfd;int mserverport;int mtimeout;int mtransmode;char *mserverip;char *mhostname;//域名char *mclientip;public:abstractclient(int port, cha

2015-07-08 18:25:29 800

转载 一个可靠的发送和接受数据函数

在广域网条件下,客户端与服务器打交道,如果仅仅是简单的send-recv方式,那么潜在的bug是无法避免的,尤其是在一个指令序列不断交互,问题更大了。例如,你预期的情况是这样的:C->S: Hello,server.  \r\nS->C:Hello,client \r\nC->S:Tell me your name \r\nS->C:My name is

2015-07-08 18:12:03 470

转载 Linux tcpdump命令详解

Linux tcpdump命令详解简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 实用命

2015-07-08 17:15:37 332

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除