当前位置: 首页 > 编程日记 > 正文

源代码查看工具 Source Navigator 使用心得

在ubuntu 10.04下试用了Source Navigator,有条件还是装Source insight吧,不是一个级别的,非常不方便。

Source Navigator 是Red Hat出品的一款查看源代码的工具,非常好用,与Windows下的Source Insight有一敌。但是它的界面不怎么好看,用的不是GTK图形库,所以界面风格与Gnome不一致,操作上也有些不同。除了这些,其它功能都非常强大,细数如下。里面的一些简写约定如下:

Code Area

cl Classes

con Constants

e Enums

ec Enum Values

fd Function Declarations

fr friends

fu Functions

gv Global Variables

iv Instance Variables

ma Macros

md Method Definitions

mi Method Implementations

t Typedefs

un Unions

lv Local variables

ud Undefined

Cross-Reference

r Read

w Written

p Passed

u Unused

SNav的代码窗口有6个标签页,它们分别是

“Edit”

“Hierarchy”

“Class”

“Xref”

“Retriever”

“Grep”

其中, Edit区是代码显示和修改的区域,是工作的主要区域;“Hierarchy”和“Class”是C++代码的组织工具;“Xref”是最强大的一个工具,它会把一个函数中的所有用到的变量,调用的函数,用到的结构全记录并展现出来;“Retriever”也是一个非常有用的工具,用于把一个库代码包中的所有定义的符号列出来,并记录相应的属性;“Grep”用于查找某一个符号,可指定搜索的范围,既可全局查找也可部分文件查找。阅读代码时常用到的一些键值组合:

Ctrl+leftarrow | rightarrow | uparrow | downarrow 以词的形式移动光标

Ctrl+Alt+leftarrow | rightarrow | uparrow | downarrow 以词的形式移动光标并选择走过的区域

Ctrl+Shift+D 查看选定符号的声明

Ctrl+Shift+I 查看选定符号的定义代码窗口的工具栏上有7个元素,分别是

“回退跳转”

“前进跳转”

“光标处所在的函数名或结构名”

“选定并要操作(比如查找)的字符串”

“在本文件中查找选定的字符串”(比Ctrl+F查找功能好使)

“在整个工程中查找与选定字符串匹配的代码”

“在整个工程中以Grep的方式查找与选定字符串匹配的代码”(会跳到Grep标签页中显示结果)注意:snavigator在导入目录时,目录名中间不能出现空格。

三、在ubuntu中安装 Source-Navigator及使用手册

2009-09-25 23:19

from : http://hi.baidu.com/xiaohu_tiger/blog/item/66d207888431d6b40f2444ec.html

1 通过apt-get安装(版本较旧)

安装命令:sudo apt-get install sourcenav

启动命令:snavigator

2 手动安装最新版本

1)到官方网站获取软件包

http://sourceforge.net/project/showfiles.php?group_id=51180

2)解压缩

tar zxvf s ourcenav-6.0.tar.gz

./configure --prefix=/opt/sourcenav (install 文件推荐参数)

make

make install

ps:如果出现权限问题,前面加sudo

3)如果碰到下述错误

/root/tk8.4.16/unix/../generic/tk3d.c:1279: error: ‘TkBorder’ has no member named ‘resourceRefCount’

/root/tk8.4.16/unix/../generic/tk3d.c:1280: error: ‘Tk_FakeWin’ has no member named ‘display’

/root/tk8.4.16/unix/../generic/tk3d.c:1280: error: ‘Tk_FakeWin’ has no member named ‘screenNum’

/root/tk8.4.16/unix/../generic/tk3d.c:1280: error: ‘TkBorder’ has no member named ‘screen’

/root/tk8.4.16/unix/../generic/tk3d.c:1281: error: ‘Tk_FakeWin’ has no member named ‘atts’

/root/tk8.4.16/unix/../generic/tk3d.c:1281: error: ‘TkBorder’ has no member named ‘colormap’

/root/tk8.4.16/unix/../generic/tk3d.c:1301: error: ‘TkDisplay’ has no member named ‘borderTable’

/root/tk8.4.16/unix/../generic/tk3d.c:1301: error: ‘TkDisplay’ has no member named ‘borderTable’

/root/tk8.4.16/unix/../generic/tk3d.c:1306: error: ‘TkBorder’ has no member named ‘nextPtr’

。。。。。。

则在终端是输入:sudo apt-get install libx11-dev

4) 启动snavigator

在终端直接输入:snavigator

5) 使用手册(user manual)

http://sourcenav.sourceforge.net/online-docs/userguide/index_ug.html

还有一个 source insight 和source navigator的比较的帖子:

http://fky168.blog.163.com/blog/static/3786097200831033957620/

========================================================

运行source navigator的问题

方法一、(转载)

安装完成后运行 snavigator 提示

[root@MagicLinux sourcenav-6.0]# snavigator

Can't find a usable tk.tcl in the following directories:

/usr/local/share/tk8.3

/usr/local/share/tk8.3/tk.tcl: no event type or button # or keysym

no event type or button # or keysym

while executing

"bind Listbox {

%W yview scroll [expr {- (%D / 120) * 4}] units

}"

(file "/usr/local/share/tk8.3/listbox.tcl" line 182)

invoked from within

"source [file join $tk_library listbox.tcl]"

invoked from within

"if {[string compare $tcl_platform(platform) "macintosh"] && /

[string compare {} $tk_library]} {

source [file join $tk_library button.tcl]

so..."

(file "/usr/local/share/tk8.3/tk.tcl" line 30

invoked from within

"source /usr/local/share/tk8.3/tk.tcl"

("uplevel" body line 1)

invoked from within

"uplevel /#0 [list source $file]"

This probably means that tk wasn't installed properly.

不知其所以然,重新安装tk8.3无效,升级到tk8.5无效

后来在网上发现需要给下载的Source-Navigator 6.0打补丁

到http://bugs.gentoo.org/show_bug.cgi?id=225999 找到 tk-8.4-lastevent.patch 补丁

将补丁粘贴到source navigator 源码目录 sourcenav-6.0/tk目录下,再cd 到sourcenav-6.0/ tk 的源码目录

patch -p0 -i tk-8.4-lastevent.patch

删除安装,重新安装,可以运行了(我试了一下不行)。

方法二、(转载)

有找到解法:

(http://forums.fedoraforum.org/showthread.php?t=213441)

注掉 lines 182-184 in the file /opt/sourcenav/share/tk8.3/listbox.tcl

注掉 lines 457-459 in the file /opt/sourcenav/share/tk8.3/text.tcl

在panel中添加Launcher,在Command中添加/opt/sourcenav/bin/snavigator

====== 安装完后在桌面增加捷径的方法 ======

我要做捷径的目标是/opt/sourcenav/bin/snavigator (这是个sh script)

里面要改一行

#snbindir=`dirname $0`

snbindir=/opt/sourcenav/bin

这样再建一个捷径到桌面即可:

ln -s /opt/sourcenav/bin/snavigator ~/Desktop/

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dian_technology/archive/2010/07/23/5757884.aspx

相关文章:

那个分分钟处理10亿节点图计算的Plato,现在怎么样了?

受访者 | 于东海记者 | 夕颜出品 | CSDN(ID:CSDNnews)「AI 技术生态论」 人物访谈栏目是 CSDN 发起的百万人学 AI 倡议下的重要组成部分。通过对 AI 生态顶级大咖、创业者、行业 KOL 的访谈,反映其对于行业的思考、未来趋势的判断、技术的实践…

android TextView里边实现图文混配效果

做的游戏攻略中的图文载入已经用TextView实现。但看到网易新闻里的内容。点击图片能够调到一个新的Activity ,感觉也像Textview 实现的,但不知道怎么弄,想想能够通过动态载入Textview和ImageView 布局实现,但当量大的时候回事很复…

《异步处理在分布式系统中的优化作用》学习笔记

原文地址:http://www.infoq.com/cn/presentations/optimization-of-asynchronous-processing-in-distributed-systems 视频地址:http://v.qq.com/boke/page/l/0/6/l0196plsvp6.html 主讲人:赵海平 Facebook hiphop HHVM 阿里巴巴技术保障部…

CISCO设备上DHCP实例

Cisco设备上设置DHCP实例 -------------------------------------------------------------------------------- 一位客户想把DHCP SERVER迁移到6509交换机的MSFC上,要求还挺复杂: 1.同时为多个VLAN的客户机分配地址 2.VLAN内有部分地址采用手工分配的…

360金融翟政:科技成就金融场景零容错

翟政,拥有超过20年的互联网经验,我国第三方支付第一批从业者,是多个知名第三方支付公司产品研发团队的组建者,核心系统的主设计师,管理层核心成员。设计搭建的支付系统过去这十年来一直在服务着各行各业的在线支付需求…

OSSIM平台安全事件关联分析实践

OSSIM平台安全事件关联分析实践在《开源安全运维平台OSSIM最佳实践》一书中叙述到,事件关联是整个OSSIM关联分析的核心,对于OSSIM的事件关联需要海量处理能力,主要便于现在需要及时存储从设备采集到的日志,并能关联匹配和输出&…

《Apache Kafka》学习笔记

1.什么是Kafka Kafka是一个高通过率的分布式消息系统 2.消息队列(Message Queue)MQ的模型 消息队列的简单架构图 3个核心概念: Sender Application:消息队列的发送者,也叫生产者producer Message Queue Receiver Application…

4 月 24 日开播!基于神经网络建模的信息传播预测

信息传播在我们的日常生活中无处不在,例如谣言的扩散、产品的推广以及新思想和新技术的普及等等,其建模和预测已经在多个重要领域内得到了广泛的研究。近年来,很多研究者利用以循环神经网络为主的深度学习模型对信息传播过程进行建模&#xf…

并行计算圆周率

看到这个题目,俗了,大家都在计算圆周率。不过咱们的目的是看一下并行计算的基本流程。 书上计算PI用的是精确的数值计算方法,我这里再给出一种概率计算方法。 OpenMP和MPI将同时亮相。 计算PI的方法 1.tan(PI/4)1 > PI4arctan1。知…

kafka-manager 的编译和使用(附安装包)

2019独角兽企业重金招聘Python工程师标准>>> kafka-manager是一个非常好用的kafka web管理工具,yahoo开源。 地址:github.com/yahoo/kafka-manager 1、编译过程比较简单,重点是能翻墙,如果网络环境不允许,可…

匿名函数应用-多线程测试代码

多线程测试代码&#xff0c;不用单独再写一个类&#xff0c;比较方面而已。 public class MainThread { static int a0; for (int x 0;x<100;x){ Thread t new Thread(new Runnable() { Override public void run() { while(true){ try { a;System.out.println(a);…

YOLOv4来了,大型调优现场,速度和准确率俱佳

作者 | VincentLee来源 | 晓飞的算法工程笔记简介论文提出YOLOv4&#xff0c;从图1的结果来看&#xff0c;相对于YOLOv3在准确率上提升了近10个点&#xff0c;然而速度并几乎没有下降&#xff0c;论文主要贡献如下&#xff1a;提出速度更快、精度更好的检测模型&#xff0c;仅需…

关于对J2EE几点误解和错误认识的澄清

转自&#xff1a;http://www.jdon.com .Net和J2EE的争论一直没有停止&#xff0c;我也参加过“程序员”杂志主持的“.Net和Java之争”之类的讨论&#xff0c;本来这两种技术都是为用户提供了竞争性的选择&#xff0c;对于用户来说是一件好事&#xff0c;多种选择远胜于单一选择…

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in r...

2019独角兽企业重金招聘Python工程师标准>>> Struts Problem Report Struts has detected an unhandled exception: Messages: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or re…

Java的Redis连接池代码性能不错

其实这个是引用自网友http://blog.csdn.net/tuposky/article/details/45340183&#xff0c;有2个版本&#xff0c;差别就是ReentrantLock和synchronized。另外原作者使用了断言&#xff0c;我觉得这个还是不用为好。 ReentrantLock版 import java.util.concurrent.locks.Reent…

降低预测过程计算成本,这些NLP模型压缩方法要知道

编译 | 凯隐出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;近年来&#xff0c;基于谷歌Transformer的语言模型在神经机器翻译&#xff0c;自然语言推理和其他自然语言理解任务上取得了长足进展。通过多种语言模型的平均损失进行自我监督预训练&#xff0c;使得在大范…

政府要尽快对应用商店出台管理办法

前两天联想的开发者大会&#xff0c;我和联想的CTO贺志强先生联合接受了一个视频访谈&#xff0c;贺先生谈到联想的乐园软件商店&#xff0c;组织大量的人力对于软件进行检测&#xff0c;以保证软件是合格产品&#xff0c;不会给用户一路带来侵害&#xff0c;对于联想这种负责态…

antlr-2.7.6.jar的作用

项目中没有添加antlr-2.7.6.jar,hibernate不会执行hql语句 并且会报NoClassDefFoundError: antlr/ANTLRException错误

junit集成Hamcrest测试集合中某个属性是否包含特定值

junit已经集成Hamcrest但是还是需要引用hamcrest-library&#xff0c;不然只有基本方法&#xff0c;高级的没有 <dependency> <groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

腾讯第100个开源项目:微信开源推理加速工具TurboTransformers

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;4月24日&#xff0c;腾讯正式宣布开源Transformer推理加速工具TurboTransformers。该工具面向自然语言处理领域中Transformers相关模型丰富的线上预测场景&#xff0c;在微信、腾讯云、QQ看点等产品的线上服务中已经广…

程序员:提高编程效率的技巧

本文写给那些认为在项目上所花时间和效率成正比的程序员。我要说的是&#xff0c;事实并非如此。虽然你需要在电脑前敲键盘输入东西&#xff0c;但这只和编程沾上一点边。那么&#xff0c;程序员该如何利用时间呢&#xff1f; 俗话说&#xff0c;磨刀不误砍柴工&#xff0c;拿出…

Qunee for HTML5 V2.5新版本发布

为什么80%的码农都做不了架构师&#xff1f;>>> Qunee for HTMl5 V2.5 beta2版本正式发布,此次版本内核改动较大,采用了新的2D渲染引擎,增加了延迟绘制功能,大幅改善画布的浏览体验,此外重构了鼠标键盘以及触控交互监听处理,增加右键框选功能,改善了多点触控交互,增…

泛型推断类型不符合上限

程序报错推断类型不符合上限 springsecurity需要自定义用户服务 代码 Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(new CustomUserDetailsService());}public class CustomUserDetailsService implemen…

如何通过深度学习,完成计算机视觉中的所有工作?

Mask-RCNN做对象检测和实例分割作者 | George Seif译者 | 天道酬勤&#xff0c;责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;Mask-RCNN做对象检测和实例分割&#xff1a;https://miro.medium.com/max/1200/1*s9raSe9mLeSSuxE3API-ZA.gif你想做计算机视…

Windows PowerShell 2.0语言之字面类型系统

PowerShell语言允许通过一个字面类型&#xff08;type Literals&#xff09;来访问类型&#xff0c;它是用括号抬起的类型名&#xff0c;返回.NET底层的System.Type对象实例&#xff0c;如&#xff1a; PS C:\> [System.Int32]IsPublic IsSerial Name …

建立名称server

一、实验的目的&#xff1a;实现DNSserver功能&#xff0c;提供正向、反向解析二、实验环境装有Linux的Windows系统IP为192.168.6.3的虚拟机三、实验目的建立gr.org域的主名称server。解析&#xff1a;名称 IP 用途ns.gr.org 192.168.…

Java的JSON操作存储List到Redis

使用jackson和json-lib都可以 <dependency> <groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><dependency><groupId>net.sf.json-li…

关注基于云的下一代应用开发

接受经济和信息化的视频专访专访的主页地址为&#xff1a;http://www.enicn.com/article/2010-08-20/0R064b52010.shtml我的其他视频&#xff0c;请参考土豆空间&#xff0c;地址为http://www.tudou.com/home/larryvmw。

确认了!MySQL 狠甩 Oracle 稳居 Top1!

01几乎所有程序员都会用到的 MySQL稳居 Top 1科技长河&#xff0c;顺之者昌&#xff0c;错失者亡。在2019年&#xff0c;CSDN面向具备超强计算力的数字化世界&#xff0c;我们进行了「大数据技术应用现状分析」&#xff0c;并发布了《2019-2020 年中国开发者调查报告》。发现&a…

[AWK]使用AWK进行分割字符串以及截取字符串

如何split当前的字符串&#xff0c;用$0&#xff0c;例如&#xff1a; cat num.2012032911 | awk {print $2} | awk {split($0,b,".");print b[2]} | cut -c 3- 获取第二列&#xff0c;例如第二列是com.sb3456.you那么在split当前的这个字符串获得sb3456,最后截取sb3…