Sunday, August 12, 2012

[Linux] backtrace

使用gdb可以在断点处停下来从而允许我们查看call strack. 可是有时候我们希望在程序里自动的显示当前的call stack --- 比如在异常的时候写到log当中.这时候就需要使用backtrace:
1 使用backtrace
http://www.gnu.org/software/libc/manual/html_node/Backtraces.html
显示出当前call stack 的backtrace: 每一行为一个frame对应的binary和在binary中的地址

Obtained 7 stack frames.
/home/foo/bench_cache() [0x4050f5]
/home/foo/bench_cache() [0x405f4e]
/home/foo/bench_cache() [0x407d8d]
/home/foo/bench_cache() [0x40283a]
/home/foo/bench_cache() [0x402e13]
/lib/libc.so.6(__libc_start_main+0xfe) [0x7fad2481dd8e]
/home/foo/bench_cache() [0x401eb9]
2 使用addrline
addr2line将binary的相对offset地址转化为对应的文件以及行数
$ addr2line -e bench_cache -f 0x4050f5
print_backtrace
/home/foo/bench_util.h:28
参数:
  • -e binary, 指定对应的binary
  • -f, 显示对应的function名称

gmail advanced search tips

http://support.google.com/mail/bin/answer.py?hl=en&answer=7190&topic=1668965&ctx=topic

Saturday, August 11, 2012

Raspberry Pi

下载并解压, 得到 2012-07-15-wheezy-raspbian.img 你需要把这个img考到你的SD卡当中. 在MacOS中:
$ diskutil list
比如你的SD是/dev/disk1的话
$ diskutil unmountDisk /dev/disk1
$ sudo dd if=2012-07-15-wheezy-raspbian.img of=/dev/disk1
可能会比较久--比如我class 4的一张SD卡考了足足有40来分钟

用Resperberry Pi跑DNS服务


用Resperberry Pi上跑unblock youku服务


$ sudo apt-get install node.js npm #安装node.js和npm
$ sudo npm install -g ub.uku.js #安装unblock youku的server程序
$ ub.uku.js #运行unblock youku的server

把服务blah (比如unblock youku)添加到开机服务中


使用update-rc
$ update-rc.d blah defaults

http://www.debian-administration.org/articles/28