Archive for 02月, 2009

gdb如何批量设置断点

星期四, 02月 26th, 2009
由于gdb不能够保存设置的断点,所以我们只有用-x 参数导入一个相当于批处理的文件来设置断点了

我先用ctags来生成tag文件:

代码:
pjq@gentoo-pjq ~/svn/gsopcast-read-only/src $ ctags -f gsopcast.tag *.cc

然后再用命令解析出其中的函数:

代码:
cat gsopcast.tag |grep “(”|cut -d “/” -f2|cut -d “(” -f1|cut -d ” ” -f2|awk ‘NF>0′|sed ’s/\^//g’|sed ’s/\*//g’|sed ’s/^/b /g’>bp.list

这样就生成了设置所有函数断点的文件了:

代码:
pjq@gentoo-pjq ~/svn/gsopcast-read-only/src $ cat bp.list
b cell_data_func_card
b cell_data_func_name
b change_notebook_tab
b channel_list_update
b connect_on_idle
b connect_to_server
b create_iochannel
b delete_iochannel
b destroy
b echo
b fill_launch_combo
b fork_channel
b fork_player
b fork_sop
b get_unique_clip
b handle_io_pipe
b handle_stdout_pipe
b io_socket_record
b io_socket_statistics
b is_running
b kill_player
b kill_sop
b launch_record
b list_operate
b list_search_url
b load_config
b load_tree_state
b main
b on_adj_sound_change_value
b on_button_channel_toggled
b on_button_exit_clicked
b on_button_expand_clicked
b on_button_player_clicked
b on_button_record_clicked
b on_button_save_clicked
b on_button_search_clicked
b on_button_sopcast_clicked
b on_button_stop_clicked
b on_channel_update
b on_entry_search_activated
b on_treeview1_row_activated
b on_window1_destroy
b parse_command_line
b pipe_signals
b processSignal
b quit_on_owner_change
b remote_call
b save_config
b save_tree_state
b setup_unique
b start_statistics_monitor
b statistics_monitor
b statistics_show
b store_tree_state
b timeout_me
b tree_search
b tree_search_key
b trim
b unique_paste_uri
b unique_set_text
b vKeyPressReleaseCallback
pjq@gentoo-pjq ~/svn/gsopcast-read-only/src $

有些函数可能解析错误了,
再用

代码:
gdb -x bp.list gsopcast

启动的时候可以看到,然后再将这些有问题的断点从bp.list中去掉,

之后再调度就没问题了。

写了一个利用sp-sc-auth看网络电视的脚本

星期二, 02月 24th, 2009

详见:http://gentoo-pjq.vicp.net/bbs/viewtopic.php?f=2&t=37&p=44&sid=492a625a38a1fd9af6983039d5443c01#p44

pjq@gentoo-pjq ~/sopcast $ cat psop.sh
#!/bin/sh
#pjq@gentoo-pjq.vicp.net
#USAGE:
#./psop.sh tvname
#example:
#./psop.sh cctv-1
#then you can use mplayer to play the tv
#mplayer http://127.0.0.1:8908
 
#define const
GCHLXML=/tmp/gchlxml
ITEM=/tmp/item
NAME=/tmp/name
TEMP=/tmp/tempfile
TV=$1
#Get the gchlxml if no existing file
[ -f $GCHLXML ] || wget -O $GCHLXML http://channel.sopcast.com/gchlxml
 
cat $GCHLXML|awk -F "item" '{print $2}'|sed 's/>//g'|sed 's/<\///g'>$ITEM
cat $GCHLXML|awk -F "name" '{print $2}'|sed  's/>//g'|sed 's/\"//g'|sed 's/<\///g'|sed 's/=/:/g'>$NAME
paste -d "@" $NAME $ITEM|awk 'NF>0' |sort|uniq|grep -n "" >$TEMP
 
grep -i  $TV $TEMP
echo -n "Input TV number:"
read  number
#echo $number
 
V=`grep -i  $TV $TEMP| grep "$number:" |cut -d "@" -f2`
N=`grep -i  $TV $TEMP| grep "$number:" |cut -d "@" -f1`
echo "Now playing:$N "
pkill sp-sc-auth
sp-sc-auth  $V 3908 8908 >/dev/null &
 
rm $TEMP $NAME $ITEM
 
#[ $2 == 'p' ] && sleep 5 && mplayer http://127.0.0.1:8908

运行效果1:
pjq@gentoo-pjq ~/sopcast $ ./psop.sh cctv-1
72: en:CCTV-1 cn:CCTV-1综合频道CCTV-1 [CCTV-1综合频道]@sop://broker.sopcast.com:3912/15102
Input TV number:72
Now playing:72: en:CCTV-1 cn:CCTV-1综合频道CCTV-1 [CCTV-1综合频道]

运行效果2:
pjq@gentoo-pjq ~/sopcast $ ./psop.sh cctv
10: en:CCTV-5 cn:CCTV-5体育频道CCTV-5 [CCTV-5体育频道]@sop://broker.sopcast.com:3912/6002
72: en:CCTV-1 cn:CCTV-1综合频道CCTV-1 [CCTV-1综合频道]@sop://broker.sopcast.com:3912/15102
74: en:CCTV-2 Finance cn:CCTV-2财经频道CCTV-2@sop://broker.sopcast.com:3912/15103
107: en:CCTV-3 Comedy cn:CCTV-3 综艺频道CCTV-3@sop://broker.sopcast.com:3912/8888
153: en:CCTV-6 Movie cn:CCTV-6电影频道CCTV-6@sop://broker.sopcast.com:3912/6028
180: en:CCTV-8 cn:CCTV-8电视剧频道CCTV-8@sop://broker.sopcast.com:3912/15163
186: en:CCTV-5 cn:CCTV-5体育频道CCTV-5 [CCTV-5体育频道]@sop://broker.sopcast.com:3912/6002
192: en:CCTV-6 Movie cn:CCTV-6电影频道CCTV-6@sop://broker.sopcast.com:3912/6028
194: en:CCTV-3 Comedy cn:CCTV-3 综艺频道CCTV-3@sop://broker.sopcast.com:3912/8888
196: en:CCTV-2 Finance cn:CCTV-2财经频道CCTV-2@sop://broker.sopcast.com:3912/15103
Input TV number:10
Now playing:10: en:CCTV-5 cn:CCTV-5体育频道CCTV-5 [CCTV-5体育频道]

运行过后用mplayer就可以进行播放了:
mplayer http://127.0.0.1:8908

如果要在终端下播放(ctrl+alt+F[1...6]),可以加几个参数:
mplayer http://127.0.0.1:8908 -zoom -x 640 -y -480 -vo fbdev2

这样就可以不进图形界面就可以看网络电视了。

USE标记

星期六, 02月 21st, 2009

USE标记

在管理 USE 标记之前,我们首先要区分 全局 与 本地 的概念。
全局标记,顾名思义,就是系统软件包或绝大部分软件包都会依赖的标记。
本地标记,是针对安装的软件包不同,可自由定制的标记。

当前可用的全局USE标记列表可以在 /usr/portage/profiles/use.desc文件里找到。

当前可用的局部USE标记列表可以在 /usr/portage/profiles/use.local.desc 文件里找到。

BTW, 建议安装 gentoolkit 里, 使用里边的 euse -i 命令来查看详细信息.

添加,修改,删除全局 USE 标记, 我建议改在 /etc/make.conf

而针对本地标签, 则通过制定软件包+标签的方式, 定义在 /etc/portage/package.use 里.

这样的可以有效区分全局和本地, 使其工作在不同的作用域下.

另外, 针对单个软件包, 还可以进行临时的 增删改 USE 标记:

USE=”-cups” emerge -avt samba
但不是很推荐这样用,因为当系统升级或装新版软件包时, 原来支持的标记可能被新版去掉,到时候整个软件的使用也会成问题。

USE标签的结构:

所有可以配置 USE 标记的地方
/usr/portage/profile/base/make.defaults
/usr/portage/profile/default-linux/make.defaults
/usr/portage/profile/default-linux/x86/make.defaults
/usr/portage/profile/default-linux/x86/2007.0/make.defaults
/etc/make.conf
/etc/portage/package.use
作为环境变量的USE设定

顺序,从低到高只使用第一次碰到的。比如 package.use 里定义了 -ssl,那么 make.conf 里再定义 ssl 就会被忽略.

1. make.defaults里面的USE默认设定
2. 用户在/etc/make.conf里面的USE设定
3. 用户在/etc/portage/package.use里面的USE设定
4. 作为环境变量的USE设定

以上所有配置文件,除了 make.defaults 不建议修改(emerge –sync 后,你的修改会被覆盖), 其他的建议分全局

和本地两种作用域来管理.

微软名单可笑,但更可悲

星期四, 02月 19th, 2009

话说今天在CSDN上逛看到了一篇名为《微软公布与IE8不兼容网站名单 微软官网站也在其中》,心想这是什么名单呢,就进去看了下。看完后是先振惊,然后是悲哀。

CSDN怎么说也是中国IT业的一面旗帜,后面加了一个CSDN不在其列,这是沾沾自喜还是什么:意思是说,你们其它网站都很挫,只有我CSDN最牛,看我都不在它的名单里面,自做多情—-可悲!

微软是很牛,要不大多数人说到系统就只知道WINDOWS。微软的这个名单,我的理解好像是说,你们这些网站怎么能不兼容IE8,赶快去修改网页, 改好后,你就不会列在这个光荣榜上了。微软IE的市场占有率是很高,但也不是只有你微软有浏览器,人家不用你的还不行吗?列出这样一个名单,一副不可一世 的样子。好像我的网页不和你的IE8兼容就会天塌下来一样。

微软列出这样一个名单,本无可厚非,人家想列什么你们都管不着。但实际上是很多网站都从心底里被微软给奴役了,生怕自己的网站和IE8不兼容,被微软点名批评了。记住是点名批评了,好好想想什么时候一个人会被点名批评!

CSDN将微软的这个名单贴出来,本来也没什么错,让人受不了的得,它加了一个“无CSDN“,好像我CSDN网站就是比其它网站强,你看微软都没有把我列上去,这是什么嘴脸,看它得瑟的,用什么词来形容我就不好说了,大家心里想想就行了。

为什么我们要和它的兼容,为什么我们的网站一定要和它IE8兼容,我们已经中毒太深,难道还要继续下去?看看现在,很多网页都要用IE打开,才来正 常显示,包括各家电子银行的网上银行,都非IE而不能登也,现在它出了一个新的IE8,难道我们还要将所有不兼容它的网站全部修改一遍,直至不在它那个所 谓的光荣榜上,如果真的这样,那美国人只能偷着乐了:一群傻B。

微软出一个IE8,还煞有介事的列出这样一个名单,因为在它看来,我就是标准,你们都得向我靠拢,典型的强盗心理。

不知道有多少网站会被它的淫威所吓倒 ,让我们拭目以待。

apache反应很慢原因分析

星期二, 02月 10th, 2009

http://gentoo-pjq.vicp.net/bbs/viewtopic.php?f=2&t=14&sid=808d89ab6c9c752772f4b29fddeed069

今天下班回到宿舍,就发现apache访问很慢,即使是用本地地址192.168.0.160访问也是一样,这个就排除了是网络的原因了,搜了一番也没找到什么原因。
然后就查看LOG

tail -f /var/log/apache2/error_log

发现里面都是相同的内容:

[Tue Feb 10 22:52:51 2009] [notice] child pid 7887 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7888 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7889 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7890 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7891 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7892 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7893 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:51 2009] [notice] child pid 7894 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:52 2009] [notice] child pid 7895 exit signal Segmentation fault (11)
[Tue Feb 10 22:52:52 2009] [notice] child pid 7896 exit signal Segmentation fault (11)

然后再搜,隐约中搜到好像是应该访问了某个不应该访问的文件造成的。
然后再分析了正常LOG,发现几个IP不停的访问几个文件

gentoo-pjq pjq # tail -f /var/log/apache2/access_log
\xad\x97\xe5\xb9\x95.rmvb HTTP/1.1" 404 306
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/%CB%C0%CD%F6%D3%CE%CF%B7%D6%D0%CE%C4%D7%D6%C4%BB.rmvb HTTP/1.1" 404 298
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/\xcb\xc0\xcd\xf6\xd3\xce\xcf\xb7\xd6\xd0\xce\xc4\xd7\xd6\xc4\xbb.rmvb HTTP/1.1" 404 298
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/%E6%AD%BB%E4%BA%A1%E6%B8%B8%E6%88%8F%E4%B8%AD%E6%96%87%E5%AD%97%E5%B9%95.rmvb HTTP/1.1" 404 306
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/\xe6\xad\xbb\xe4\xba\xa1\xe6\xb8\xb8\xe6\x88\x8f\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe5\xb9\x95.rmvb HTTP/1.1" 404 306
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/%CB%C0%CD%F6%D3%CE%CF%B7%D6%D0%CE%C4%D7%D6%C4%BB.rmvb HTTP/1.1" 404 298
222.68.163.171 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/\xcb\xc0\xcd\xf6\xd3\xce\xcf\xb7\xd6\xd0\xce\xc4\xd7\xd6\xc4\xbb.rmvb HTTP/1.1" 404 298
117.82.54.65 - - [10/Feb/2009:23:17:01 +0800] "GET /ftp/music/%E7%B2%BE%E6%AD%A6%E9%97%A8.rm HTTP/1.1" 404 289
117.82.54.65 - - [10/Feb/2009:23:17:07 +0800] "GET /ftp/music/\xe7\xb2\xbe\xe6\xad\xa6\xe9\x97\xa8.rm HTTP/1.1" 404 289
117.82.54.65 - - [10/Feb/2009:23:17:11 +0800] "GET /ftp/music/%BE%AB%CE%E4%C3%C5.rm HTTP/1.1" 404 286
117.82.54.65 - - [10/Feb/2009:23:17:17 +0800] "GET /ftp/music/\xbe\xab\xce\xe4\xc3\xc5.rm HTTP/1.1" 404 286

心想会不会是这几个文件造成的。
然后我将对应目录下的这几个文件移走,发现就一切正常了。真是很奇怪,也不知道这几个文件有什么特殊的地方。

害得我将apache重新装了好几次,还将phpBB重新编译了。

Recent Posts:
  1. 博客搬迁了~
  2. Android live cd试用及介绍
  3. Android Browser Introduction 2:结构图
  4. Android Browser Introduction 1
  5. 从20080707--20090707
  6. Rate My Life Quiz!
  7. Registration
  8. 在公司电脑装上了linux,还存在诸多问题
  9. NND,苏州电信想钱想疯了,上网1.2元/时,强推天冀!!!
  10. google.com被及艾服达不溜了

Register Login