Archive for ‘ToolKits’ Category

February 14, 2011

  列位安好。简单总结下GDB调试器的使用。

准备

  默认情况下,gcc/g++编译的可执行文件是不包含调试信息的,GDB是一个源代码级的调试器,使用GDB调试程序需要程序的源代码、符号及其对应的行号等,其中符号和行号可以是单独的文件,亦可以在编译时嵌入到可执行文件中。使用gcc/g++时使用-g选项即可将必要的调试信息包含到可执行文件中,使用-g3选项还可以将源代码中的宏信息也包含进去。
另外,调试过程中需要随时查看源代码,但源代码并没有包含到可执行文件中。通常GDB在当前目录查找源文件,但某些情况下(比如调试系统命令)需要手动指明源代码的查找目录,directory ~向GDB指明到$HOME下查找源文件。

启动

  GDB的启动很灵活,它的各种特性,你可以在Shell下通过选项和参数指定,也可以在GDB启动之后在GDB自己的命令行下使用GDB内置的命令来指定。最常用的是直接使用命令gdb PROGRAM启动,这样gdb自动加载符号表等调试信息。若要向被调试程序传递参数,可以采用gdb –args program ARG1 ARG2的形式,其中–args(或者-args)是必须的,它告诉GDB该选项之后已经没有GDB需要的选项了。另外,还可以直接使用gdb启动,然后使用file program加载调试信息。此时若要设置被调试程序的参数,可以使用set命令的args子命令,如set args ARG1 ARG2. 还有一种传递参数的方法,在下面介绍。

Tags: . 1,585 views
October 6, 2010

  写程序时,尤其在C/C++程序中,有大量的配对的符号(surrounding):( ), [ ], { }, < > ‘ ‘, ” “,另外标记语言(如XML)更是由无数的配对标记组成:,

. 如果能够快速地处理这些surroundings,就能大大提升编程的效率。
  Vim本身就有这种配对符号的能力,在Vim中这叫做text object,可以使用:h text-objects查看这些text objects。你会发现Vim只能对这些配对符所包含的文本或者整个text object进行删除和修改,却不能对surrounding进行修改,更不能为普通文本添加surrounding。
  既然有这种需求,就肯定会有热心人士努力,来满足这种需求,方便了自己,也方便了整个Vim用户群。Tim Pope同志就为Vim写了这款插件,surround.vim:

This plugin is a tool for dealing with pairs of “surroundings.” Examples of surroundings include parentheses, quotes, and HTML tags. They are closely related to what Vim refers to as |text-objects|. Provided are mappings to allow for removing, changing, and adding surroundings.

Tags: . 766 views
October 2, 2010

  想必您经常使用复制粘贴功能吧,如果你在桌面环境下工作的话。那么您对Ctrl + C与Ctrl + V一定很熟悉了,您可能还经常使用中指按下鼠标的中键来快捷的粘贴。在X中,此两种粘贴方式是有区别的。Ctrl + V之前要有选中和相应的Ctrl + C,而中键之前只需要选中即可,前者使用的是剪切板(Clipboard),后者使用的是选中(Primary Selection)。关于两者细微的区别见这里
  下面要介绍的是一个能够在命令行访问剪切板(或者Selection,下面以“剪切板”概而论之)的工具。你可能知道,所谓剪切板以及复制粘贴这些功能都是X提供的,而不是Linux内核本身。因此,在命令终端访问剪切板就显得不那么简单,不那么显而易见了。

1
2
3
4
#! /bin/bash
content=`xclip -o`
echo $content >>/.wordump.txt
exit 0
Tags: . 262 views
October 1, 2010

  xbindkeys是一个可以全局按键绑定的程序,使用它,你可以方便用自定义的快捷键序列,来启动常用的程序。而且,xbindkeys独立与桌面环境,无论是gnome, KDE还是xfce,都可以使用同一个xbindkeys配置。、
  xbindkeys最新版本是v1.8.3,而ubuntu10.04的源中还是v1.8.2,较旧的版本在修改配置文件后“立即生效”上有bug,最新版本已经修复。
  安装好xbindkeys后,使用下面命令生成默认的配置文件,

1
$ xbindkeys --default > ~/.xbindkeysrc

  生成的配置文件的格式大致是这样的:

Tags: . 167 views
August 9, 2010

  现在再推荐一个类似的工具集Gow(GNU On Windows). 这是一个轻量级的Cygwin“替代品”,集成了130个Linux命令,可以由Windows Installer方便地安装,自动设定环境变量。同时,自动为Windows Explorer的右键菜单添加一个“open in cmd prompt”的菜单项。里面有特色的工具主要有:

  • 脚本解释器:bash, zsh ;
  • 归档、压缩工具:tar, gzip, bzip2等;
  • putty工具集: putty, psftp, pscp, plink等;
  • 下载工具:cURL, wget;
  • 编辑器:Vim;
  • 文本搜索/查看工具:grep, cat, less, head, tail等;
  • 文件(系统)相关工具:mv, cp, ls, rm, pwd等;

  另外,你可能注意到,Gow中并没有gcc(GNU Compiler Collections),所以,如果你需要这些工具,你可能还需要安装上面的cygnus。需要注意的是,这两个工具集的命令有交集,所以同时安装这两个工具集时要注意PATH中搜索路径的顺序,我更倾向于把Gow的bin放在前面。
  最后,如果你系统中已经装有Vim(通常为较高的版本),最好把Gow中提供的Vim(貌似是6.3)删除。

Tags: ,. 308 views
August 7, 2010

  这款插件叫Mumbless,思路来源于我以前使用的插件block-spam-by-math。刚刚写好,可能还不太完善,但以最近一周的使用来看,还未出现自动的垃圾留言,或许因为小众吧。如果你需要,可以点击此处下载Mumbless.zip。安装方法同其它插件。
  为了更有效地利用这款小插件,这里提供些建议:

  • Mumless.php文件中Mumbless类中的add_check_form函数中的keywords数组包含了候选的验证码,你可以根据自己的喜好增删改;
  • 验证码输入框可能会影响原有表单的tabindex顺序,你可以根据需要调整;
  • 验证码图片的大小、样式在keyimg.php文件中定义,必要时你也可以对某些参数进行修改。

  希望这个插件能为你节省些许删除垃圾评论的时间。

Tags: . 144 views
June 23, 2010

  代码中编辑一些配对符号内的内容是十分普遍的,这些配对符号包括:”, “”, (), {}, [], <>等等。Vim提供了一些命令来方便的编辑这些符号所包含的内容,将光标定位于某符号(如(或者)):

  • ci: 例如,ci(,或者ci),将会修改()之间的文本;
  • di: 剪切配对符号之间文本;
  • yi: 复制;
  • ca: 同ci,但修改内容包括配对符号本身;
  • da: 同di,但剪切内容包括配对符号本身;
  • ya: 同yi,但复制内容包括配对符号本身。
Tags: . 113 views
June 2, 2010

  我的.vimrc,贴出来给大家瞧瞧。有一些不太优雅的,或者个人色彩太强的,或者晦涩的,或者基于特定插件的部分已经被滤掉了。需要注意的是,对于gVim(Windows或者Linux/Unix),我把菜单栏和工具栏都隐藏了,不习惯的话把相关行注释即可。
  下面是一些键映射,仅供参考。

" escape for <ESC>
imap jj <esc>
" ' for `
map ' `
" save the file
" map <leader>w :w<cr>
map ,w :w<cr>
" quit
map ,q :q<cr>
" save and quit
map ,z ZZ
" yank from current line to the EOF
map ,yy "+yG
" paste from clipboard
map ,p "+p
" do substitution globally
map ,s :%s/
" do substitution in current line
map zs :s/
" roll up half screen
"map <tab> <C-u>
" roll down half screen
"map <space> <C-d>
" open the Calendar
map <F4> :Calendar<cr>
" open the NERDTree
map <F10> :NERDTree<cr>
" insert a \n
map ,<cr> i<cr><esc>
" Edit .vimrc
map ,,, :tabnew $HOME/.vimrc<cr>
Tags: . 561 views
May 22, 2010

  Esc是Vim爱好者使用非常频繁的一个按键。但,你不觉得它离你的左手有点远吗?我已经有很长时间没有使用这个键了,取而代之的是组合键Ctrl + [。但,Ctrl + [ 是不是有些麻烦呢?CapsLock,你常用到吗?我几乎不用。相反,CapsLock键就待在Tab键下面,一不留神就会按下,这在Vim下经常会导致一些莫名奇怪的现象。那我们就把它挪走吧!怎么挪?把它和Esc交换啊,但这里不是硬件的交换,你不用把Esc和CapsLock键抠下来交换,而只需要让OS把这两个键的映射对换一下即可。使用命令xmodmap可以完成此操作,xmodmap的具体用法,参考manpage。为了完成CapsLock和Esc的映射交换,你需要建立文件~/.Xmodmap:

remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

然后,执行

xmodmap ~/.Xmodmap # 使映射生效
Tags: ,. 601 views

  如果Linux用的比较多的话,你一定遇到过下面的场景。在终端启动了一个任务,这个比较耗时(比如cp, make, apt-get, wget),而此时你又需要在终端下做其它工作。你该如何是好?Ctrl + Alt + F1至F5,再开一个终端?gnome-terminator里面再开一个Tab?再启动一个rxvt?再做一次ssh连接?噢,当然,你还可以Ctrl + C,把那个耗时的进程杀掉。但这都不是一个好的解决之道,相对于使用screen来说。

screen的工作原理

  使用screen,你可以在同一个终端,同一个virtual terminator,同一个ssh中同时进行多个工作。它的大致工作原理是:当前shell中启动screen,此时screen是当前shell的一个子进程,而你现在处于screen的一个会话(session)的一个window中。这个window对应着一个shell进程(比如bash),当你陷入上面的场景时,screen可以让你再开一个(或多个)window,这个window又会对应一个新的shell进程。当然,这些window都在screen的大力监管之下,你可以在这些window之间自由切换。下面两图可能更能说清真象。

Tags: ,. 382 views
Page 2 of 3123