使用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下的比特币 ...
随机推荐
- Android应用内加载pdf的方法?
[可行] 最直接的方式下载到本地, 然后调用相关应用打开 [可行,有局限] 使用 webview 加载, 需要在 原url 前面加上 http://docs.google.com/gview?url= ...
- 22.boost图模板
//#pragma warning(disable : 4819) #include <boost/config.hpp> #include <iostream> // for ...
- HTTP学习记录
title: HTTP学习记录 toc: true date: 2018-09-21 20:40:48 HTTP协议,HyperText Transfer Protocol,超文本传输协议,是因特网上 ...
- Kettle学习系列之Kettle的起源
不多说,直接上干货! Kettle起源于十年以前,本世纪初.当时啊,ETL工具千姿百态,比较流行的工具有50个左右,ETL框架数量比工具还要多些. 根据这些工具的各自起源和功能可以分为以下4种类型,如 ...
- python 3.x 学习笔记10 (析构函数and继承)
1.类变量的用途:大家公用的属性,节省开销(内存) 2.析构函数 在实例释放和销毁的时候执行的,通常用于做一些收尾工作,如关闭一些数据库链接和打开的临时文件 3.私有方法两个下划线开头,声明该方法为私 ...
- c#.net 获取时间日期年月日时分秒生成自动文件名格式
下面是日期和时间的各种方法,转换为字符串. 如果把输出的格式改下就可以做类似的文件名了,例如:2016010110101224356.doc c#用DateTime.Now.ToString(&qu ...
- shell-3.bash的基本功能: history tab alias 快捷键
- B. Recursive Queries 打表
Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...
- TP框架传值
/*TP框架传值*/ location.href = "../add/add/department/"+department+"/username/"+user ...
- 关于VS2013 Browser Link 新功能
今天小明在编写MVC项目,设计前端项目的时候,突然遇到一个问题,就是无论什么页面,当每次执行调试的时候,页面中都会自动的加上这样一行代码: <!-- Visual Studio Browser ...