libmemcached的调试
来源:互联网 发布:淘宝上的杰克琼斯 编辑:程序博客网 时间:2024/05/16 13:50
1、libmemcached的调试
libmemcached的版本:1.0.3
./configure之后将Makefile中的CFLAGS、CPPFLAGS、CXXFLAGS都加上-g -O0之后就可以使用gdb进行调试了。
2、测试主程序
分别给出C版和C++版:
// libmemcached_test.c #include <stdio.h>#include <string.h>#include <unistd.h>#include <libmemcached/memcached.h> int main(void) { memcached_st *memc; memcached_server_st *servers = NULL; memcached_return rc; const char* server_list = "localhost:11211"; const char* key= "key"; const char* value= "value"; char* retval = NULL; size_t len = 0; time_t expire = 0; uint32_t flags = 0; memc = memcached_create(NULL); servers = memcached_servers_parse(server_list); rc = memcached_server_push(memc, servers); memcached_server_list_free(servers); if(rc == MEMCACHED_SUCCESS) { printf("added server successfully\n"); } else { printf("couldn't add server: %s\n", memcached_strerror(memc, rc)); } // set rc = memcached_set(memc, key, strlen(key), value, strlen(value), expire, flags); if(rc == MEMCACHED_SUCCESS) { printf("key stored successfully\n"); } else { printf("couldn't store key: %s\n", memcached_strerror(memc, rc)); } // get retval = memcached_get(memc, key, strlen(key), &len, &flags, &rc); if(rc == MEMCACHED_SUCCESS) { printf("key got successfully\n"); printf("value: %s\n", retval); } else { printf("couldn't get key: %s\n", memcached_strerror(memc, rc)); } free(retval); // delete rc = memcached_delete(memc, key, strlen(key), expire); if(rc == MEMCACHED_SUCCESS) { printf("key deleted successfully\n"); } else { printf("couldn't delete key: %s\n", memcached_strerror(memc, rc)); } // get retval = memcached_get(memc, key, strlen(key), &len, &flags, &rc); if(rc == MEMCACHED_SUCCESS) { printf("key got successfully\n"); printf("value: %s\n", retval); } else if(rc == MEMCACHED_NOTFOUND) { printf("couldn't get key (not found): %s\n", memcached_strerror(memc, rc)); } else if(rc == MEMCACHED_FAILURE) { printf("couldn't get key (failure): %s\n", memcached_strerror(memc, rc)); } free(retval); memcached_free(memc); return 0;}
#include <iostream>#include <libmemcached/memcached.hpp> //该头文件内部也包含了<libmemcached-1.0/memcached.h>,并在memcache命名空间中定义了class Memcache int main(void) { using namespace std;// try { memcache::Memcache memc("127.0.0.1", 11211); string key = "mykey1"; string value_str = "myvalue1"; vector<char> value(value_str.begin(), value_str.end()); vector<char> retval; time_t expire = 0; uint32_t flags = 0; // set // bool set(const std::string &key, const std::vector<char> &value, // time_t expiration, uint32_t flags) if(memc.set(key, value, expire, flags)) { cout<<"key stored successfully"<<endl; } else { cerr<<"couldn't store key"<<endl; } // get // bool get(const std::string &key, std::vector<char> &ret_val) if(memc.get(key, retval)) { cout<<"key got successfully"<<endl; cout<<&retval[0]<<endl; } else { cerr<<"couldn't get key"<<endl; } // delete // bool remove(const std::string &key) if(memc.remove(key)) { cout<<"key deleted successfully"<<endl; } else { cerr<<"couldn't delete key"<<endl; }// } catch(const memcache::Error& e) {// cerr<<"catch exception"<<endl;// cerr<<e.what()<<endl;// cerr<<e.getErrno()<<endl;// } return 0;}由于我的libmemcached默认安装到/usr/local/libmemcached/,所以添加环境变量:
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/libmemcached/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/local/libmemcached/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/libmemcached/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/libmemcached/include
g++ test.cpp -g -O0 -o test -lmemcached就可以gdb调试该程序了。
- libmemcached的调试
- libmemcached的安装
- libmemcached的Bug Patch
- libmemcached的头文件
- libmemcached的执行流程
- libmemcached
- 安装libmemcached遇到的问题
- libmemcached的安装及测试
- 使用libmemcached的c++客户端
- 使用libmemcached的c客户端
- memcache的另一扩展libmemcached的…
- memcache的另一种扩展libmemcached的安装
- memcache的另一扩展libmemcached的安装
- 基于libmemcached,php扩展memcached的安装
- 安装libmemcached的报错与解决办法
- libmemcached的一致性hash实现源码分析
- memcachedb的C语言客户端libmemcached
- MemcachedServer, libmemcached, MemcachedClient之间的关系
- JTA和RESOURCE_LOCAL区别
- php 修改上传文件大小 (max_execution_time post_max_size)
- C语言中运算符优先级表
- android解压缩GZIP格式的网页数据
- 项目中使用sqlite 数据库
- libmemcached的调试
- 并发编程之倒计数闭锁CountDownLatch
- openstack 如何不用img 像VMware一样 直接使用 iso
- 组件与事件处理的监视器
- 解决Android与服务器交互大容量数据问题
- 关于C、C++初始化
- memcached的安装方法
- Android学习笔记(五) 之android tabwidget 调整高度文字居中
- 广州传智播客分享:零基础能学好PHP吗?