(零)阅读源码的工具及参考资料_阅读源码工具_UKey_的博客-程序员秘密

技术标签: cscope  参考资料  ctags  libevent  Libevent  深入Libevent源码  分析源码工具  

工具

分析源码,首先对工具的准备很重要,在windows有阅读源码的利器source insight,但是由于我的日常系统是centos,并且不想在虚拟机下进行分析,所以找了一些linux阅读源码的工具。
我使用的主要工具是:ctags+cscope
接下来我简单介绍一下这些工具的使用

ctags的使用

在源码根目录执行ctags -R命令,递归的为源码建立tags,在根目录会生成一个Tags的文件,存放各种函数和变量的tag。
让光标停在函数/变量上,ctrl + ]即可跳转到定义处,ctrl + t可以回到你跳转前的位置。
如果文件太多了,用这个可能不太好使了。所以下面推荐cscope(一般是内建的)

cscope的使用

在源码根目录运行cscope -Rbq,就会生成cscope.out文件(索引数据库)
- R:在生成索引文件时,搜索子目录树中的代码
- b:只生成索引文件,不进入cscope的界面
- q:生成cscope.in.out文件和cscope.po.out文件,加快cscope索引速度

在vim中执行cs add cscope.out添加数据库
接下来查询命令:cs find s var(x代表查询选项,var表示要查找的函数/变量名)
大致有以下8种查询方式:

  • s:查找C语言符号,即查找函数名、宏、枚举值出现的地方
  • g:查找函数、宏、枚举等定义的位置
  • d:查找本函数调用的函数
  • c:查找调用本函数的函数
  • t:查找指定的字符串
  • e:查找egrep模式
  • f:查找并打开文件
  • i:查找包含本文件的文件

参考资料

主要参考了官方的文档http://www.wangafu.net/~nickm/libevent-book/
以及 http://blog.csdn.net/sparkliang 这系列的博客

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Move_now/article/details/77833444

智能推荐

生产者-消费者问题_7.在生产者消费者问题中,一组生产者进程和一组消费者进程共 享一个初始为空、大小_frewenwang的博客-程序员秘密

问题基本描述生产者消费者问题是一个著名的进程同步的问题。它描述的是:有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将其所生产的产品放入一个缓冲区中;消费者进程可从一个缓冲区中取走产品消费。一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区(实质在数据结构中是一个循环对列),只...

描述cookies、sessionStorage和localStorage的区别。_彩笔_小qing的博客-程序员秘密

cookie①是网站为了表示用户身份而储存在用户本地终端(client side)上的数据(通常要经过加密)。②cookie数据始终在同源的http请求中携带,会在浏览器和服务器之间来回传递。③cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭④cookie有大小限制,当超过规定的cookie数时,浏览器会根据自己的机制进行删除老cookie(4KB)

程序员必看之文章_tiantangyouxing的博客-程序员秘密

上网查资料的时候,偶尔看到了这篇文章,感觉写的不错,就贴出来与大家分享了。 一、为何要学编程? 每个人的动机不一样。大致有: 1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。3、实际工作中很多场合需要。 4、从小就立志做个程序员,做软件工程师。 05、振兴中国的软件事业。 ============================================...

刷新编辑界面eas_eas 编辑界面刷新_coyleKK的博客-程序员秘密

//刷新页面数据 private void refreshEditUI() throws EASBizException, BOSException{ if (getUIContext().get("ID") == null) { String s = EASResource.getString("com.kingdee.eas.framework.FrameWorkResource.Msg_IDIsNull"); M...

PP模块学习总结_枫雪栀的博客-程序员秘密

PP模块总览生产业务主要包含三部分:主数据管理(有效 、准确,用来确保查询速度)生产计划安排(满足销售、降低库存)生产制造执行PP模块数据定义:是企业运行基本数据,描述业务流程中的基本行为,包括:生产什么(主数据),成品需要的材料(BOM),生产地点,如何进行生产(工艺路线)。主数据是搭建整个系统的基础主要内容有物料主数据、BOM、工作中心、工艺路线、生产版本组成物料主数据组织层级:集团级别:物料编号、物料描述、物料类型、物料组(将物料分成几组)、基本计量单位工厂级别:采

随便推点

基于Unity引擎的2D像素风Roguelike地下城游戏Demo_unity roguelike_TheBug114514的博客-程序员秘密

这可以算是一个关于unity的基础笔记,用于记录在实现一个简单的roguelike游戏的过程中遇到的问题与解决方法

Vijava 学习笔记之(VirtualMachine 与HostSystem 宿主关系)_在奋斗的大道的博客-程序员秘密

源代码:package com.vmware.client;import com.vmware.util.Session;import com.vmware.vim25.GuestInfo;import com.vmware.vim25.GuestNicInfo;import com.vmware.vim25.ManagedObjectReference;import com.vm

MFC中OnDraw与OnPaint的区别_skyxie的博客-程序员秘密

 OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。 OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理

zookeeper[1] (转)ZooKeeper Programmer's Guide(zookeeper编程向导)---中文_weixin_30361641的博客-程序员秘密

原文:http://www.cnblogs.com/Xrinehart/p/3512509.html本文是为想要创建使用ZooKeeper协调服务优势的分布式应用的开发者准备的。本文包含理论信息和实践信息。本指南的前四节对各种ZooKeeper概念进行较高层次的讨论。这些概念对于理解ZooKeeper是如何工作的,以及如何使用ZooKeeper来进行工作都是必要的。这几节没有代码,但却要求...

MFC_windows media player控件的使用(VS2013 )_Helianthus_的博客-程序员秘密

声明: 参考博客: http://blog.csdn.net/akof1314/article/details/4900040 http://blog.csdn.net/akof1314/article/details/4900244 http://blog.csdn.net/akof1314/article/details/4939553下面,将具体介绍完整的流程:一、新建一个基于对话框的

Windows平台快速切换hosts文件的小工具_windows host 切换工具_星沉地动的博客-程序员秘密

上周孩子她妈跑过来说电脑上有个软件打不开,让我给看看。这个软件就是SwitchHosts!,具体问题当时没有保存截图,总之最后解决的办法就是把C:\Users\Administrator\.SwitchHosts这个文件夹删除就好了。虽然问题已经解决,但是我分析了下这个软件,核心功能就是切换预设的hosts文件方案嘛,功能并不复杂。但是它:1、高达100MB的程序体积(大概是为...

推荐文章

热门文章

相关标签