使用Visual Studio2012调试Redis源码
Redis是一款C语言编写Key-Value存储系统,基于BSD协议开放源码,其源码托管在github上,大概有三万行。
源码地址:https://github.com/antirez/redis
源码依赖于linux平台,采用GNU MAKE工具进行项目管理,而且官方没有提供Redis的Windows版本。作为源码的学习者,我们更希望使用集成开发工具来管理项目,这样代码的层次结构显得比较清晰,而且在必要的时候可以打上断点,逐步跟踪以查看代码执行流程。
幸运的是有一个名为MS Open Tech的组织专门负责將其他平台上较为优秀的开源项目移植到Windows平台,对于Redis他们也提出了一套將源码移植到Visual Studio来管理的方案。
MS Open Tech官网redis项目:https://msopentech.com/opentech-projects/redis/
生成VS项目文件方案:https://gist.github.com/MS-Interop/1439660
笔者也根据上面的方法做了一遍,很不幸,没有成功,不过也不用担心MS Open Tech將有Visual Studio工程文件的源码也放到了github上。
MS Open Tech的redis项目源码地址:https://github.com/MSOpenTech/redis
注意:branch2.8分支使用Visual Studio的版本为2013版,笔者用VS2012打开编译有很多错误。VS2012和VS2010请选择branch2.6然后点击Download Zip按钮进行下载。
msvs目录下为VS的工程文件,双击点击RedisServer.sln用VS打开。
先在hiredis和lua项目上点击右键->生成,以产生其他项目依赖的lib文件。然后在RedisSever项目上点击右键->调试->启动新实例,同时在源码上打上断点就可以调试了。
怎么样,比网上其他方法简单多了吧!
使用Visual Studio2012调试Redis源码的更多相关文章
- Redis源码漂流记(二)-搭建Redis调试环境
Redis源码漂流记(二)-搭建Redis调试环境 一.目标 搭建Redis调试环境 简要理解Redis命令运转流程 二.前提 1.有一些c知识简单基础(变量命名.常用数据类型.指针等) 可以参考这篇 ...
- redis源码学习之工作流程初探
目录 背景 环境准备 下载redis源码 下载Visual Studio Visual Studio打开redis源码 启动过程分析 调用关系图 事件循环分析 工作模型 代码分析 动画演示 网络模块 ...
- redis源码学习之slowlog
目录 背景 环境说明 redis执行命令流程 记录slowlog源码分析 制造一条slowlog slowlog分析 1.slowlog如何开启 2.slowlog数量限制 3.slowlog中的耗时 ...
- redis源码笔记(一) —— 从redis的启动到command的分发
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载联系作者并保留声明头部与原文链接https://luzeshu.com/blog/redis1 本博客同步在http://www.cnblog ...
- Redis源码剖析--源码结构解析
请持续关注我的个人博客:https://zcheng.ren 找工作那会儿,看了黄建宏老师的<Redis设计与实现>,对redis的部分实现有了一个简明的认识.在面试过程中,redis确实 ...
- 查看和调试Qt源码
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
- 玩一把redis源码(一):为redis添加自己的列表类型
2019年第一篇文档,为2019年做个良好的开端,本文档通过step by step的方式向读者展示如何为redis添加一个数据类型,阅读本文档后读者对redis源码的执行逻辑会有比较清晰的认识,并且 ...
- redis源码(一):为redis添加自己的列表类型
本文档分为三大部分: 环境介绍与效果演示 redis接收命令到返回数据的执行逻辑 代码实现 文档的重点和难点在第三部分,完全阅读本文档需要读者具备基本的c语言和数据结构知识. 环境介绍和效果演示环境介 ...
- 比特币学习笔记(二)---在windows下调试比特币源码
根据我一贯的学习经验,学习开源代码的话,单单看是不够的,必须一边看一边调试才能尽快理解,所以我们要想法搭建windows下bitcoin源码的调试环境. 紧接着昨天的进度,想要调试linux下的比特币 ...
随机推荐
- SQL语句将某字段查询出以逗号隔开
MySQL的sql语句有好多能够省去server端的复杂处理 1.group_concat 这玩意儿能够实现 将一个字段如id查询出来 成为这种格式:121,122,123,124,125,12 ...
- hdu_4707
算是水题一道吧,我也没有建树,看别人又用vector,又用bfs,dfs的,对vector不熟,所以就模拟了一下 #include<iostream> #include<string ...
- bzoj5105: [CodePlus2017]晨跑(LCM)
5105: [CodePlus2017]晨跑 题目:传送门 题解: 没有很懂Code Puls 的操作...一道签到的三个数的LCM??? 代码: #include<cstdio> #in ...
- Linux下DNS服务器搭建详解
Linux下DNS服务器搭建详解 DNS 即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析 ...
- 【算法】Dijkstra算法(单源最短路径问题)(路径还原) 邻接矩阵和邻接表实现
Dijkstra算法可使用的前提:不存在负圈. 负圈:负圈又称负环,就是说一个全部由负权的边组成的环,这样的话不存在最短路,因为每在环中转一圈路径总长就会边小. 算法描述: 1.找到最短距离已确定的顶 ...
- 【原创】JMS发布者订阅者【异步接收消息】
发布订阅模式和PTP方式不同之处为后者依赖于一个Topic话题: package com.thunisoft.jms.mine.topic; import java.util.HashMap; imp ...
- 使用python绘制词云
最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的 ...
- layui层级
zIndex:layer.zIndex, success : function(layero){ var zIndex = layer.index; $(layero).css(‘z-index’,z ...
- [Vijos P1369]难解的问题
题目大意:给你一个序列,叫你求最长上升子序列长度,但必须包含第k项. 解题思路:我们把k左边的比a[k]大的数去掉,k右边的比k小的数去掉,就可以保证选到a[k]了(因为左边的数小于a[k],而a[k ...
- 解除 linux 账户过期时间
riyimei:~ # chage -E 2019/01/01 li Aging information changed. riyimei:~ # cat /etc/shadow |grep li l ...