- 博客(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关注的人