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

linux下使用NetBeans调试libevent库

2013-03-17 17:18 225 查看
1.安装libevent

参考:/article/11177730.html

libevent安装在usr/local/libevent下

2.安装netBeans

http://www.netbeans.org

3.配置netBeans

1)打开项目的属性选项,选择包含目录,把/usr//local/libevent/include目录加进来






2) 链接器,在【其他库目录】把libevent的lib目录加上,在【库】中把要链接的库文件设为libevent/lib中的libevent.so即可。



3)运行程序



4)调试程序

可以跳入到libevent的代码下



5) 程序:

#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <event2/event.h>
#include <event2/event_struct.h>
#include <unistd.h>

using namespace std;

#define N 300

#define BUFLEN 256

struct timeval lasttime;

struct ST_EventWithDescription
{
struct event *p_event;
int time_interval;
char lable[BUFLEN];
};

static void timeout_cb(evutil_socket_t fd, short event, void *arg)
{
struct timeval newtime, difference;
struct ST_EventWithDescription *pSTEvent = (ST_EventWithDescription*)arg;
struct event *timeout = pSTEvent->p_event;
double elapsed;
evutil_gettimeofday(&newtime, NULL);
evutil_timersub(&newtime, &lasttime, &difference);
elapsed = difference.tv_sec + (difference.tv_usec / 1.0e6);

printf("%s called at %d: %.3f seconds since my last work.\n",
(char*)pSTEvent->lable,(int)newtime.tv_sec, elapsed);
lasttime = newtime;

struct timeval tv;
evutil_timerclear(&tv);
tv.tv_sec = pSTEvent->time_interval;
event_add(timeout, &tv);
}

void setParam(struct ST_EventWithDescription *stEventDescription,
struct event *m_event,int time_interval,char* m_lable)
{
stEventDescription->p_event = m_event;
stEventDescription->time_interval = time_interval;
memset(stEventDescription->lable,0,sizeof(stEventDescription->lable));
memcpy(stEventDescription->lable,m_lable,strlen(m_lable)+1);
}

void setTimeIntervalArr(int *arr,int n)
{
int i;
srand(time(NULL));
for(i=0; i<n; ++i)
{
*(arr+i) = rand()%n + 1;
//*(arr+i) = i+1;
}
}

int main(int argc, char** argv) {

struct event timeout
;
struct ST_EventWithDescription stEvent
;
int time_interval
;
int i=0;

struct timeval tv;
struct event_base *base;
int flags = 0;

setTimeIntervalArr(time_interval,N);

base = event_base_new();
evutil_timerclear(&tv);

for(i=0; i<N; ++i)
{
char buf[BUFLEN]= {0};
sprintf(buf,"task%d",i+1);
setParam(stEvent+i,timeout+i,time_interval[i],buf);
event_assign(timeout+i, base, -1, flags, timeout_cb, (void*)(stEvent+i));
event_add(timeout+i, &tv);
}

evutil_gettimeofday(&lasttime, NULL);
event_base_dispatch(base);

return 0;
}


4.说明

如果是C语言选对应选项即可

原文参考:http://hi.baidu.com/492943457/item/ca73933c34698e27b3c0c528
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: