Monthly Archives: 四月 2007

WinSCP 正體中文翻譯

一年前開始做 WinSCP 的正體中文翻譯,感謝 Mark Lin,今天終於全部翻譯完畢。需要的人請自行安裝 WinSCP 英文版,再抓翻譯檔下來放在 WinSCP 安裝目錄下,進入 WinSCP後即可選擇中文介面。但是因為功蓋許問題,WinSCP的作者不知道怎麼處理,所以有不少詞彙只能暫時用同義字替代,這個我還會跟 Martin Prikryl 問問,能不能我自己 compile 後再丟給他放官網:p如果發現誤義或是翻的不好,還請告訴我,謝謝:)

一些 Subversion reference

HomePage

http://subversion.tigris.org/

Book

http://svnbook.red-bean.com/

Chinese ver
http://freebsd.sinica.edu.tw/~plasma/svnbook/book.html (失效很久了,真可惜當時沒有先 mi 下來:~)

cvs2svn

http://cvs2svn.tigris.org/

viewcvs

http://viewcvs.sourceforge.net/

QuiteGuide

http://in2.wiki.ptt.cc/-SubversionQuickStart

http://www.me.ccu.edu.tw/svninfo/svnbook.html

Debug in FreeBSD

1. 在 compile 時加入 -g 的參數
如果要 debug 的是 compile 過的 program
最簡單的方式就是在 compile 的時候 加入 -g 的參數
這樣 compiler ( 如 gcc ) 就會在 compile 時,
加入給 debugger ( 如 gdb ) 用的資訊
接下來產生的執行檔就能很方便的讓我們來 debug

能夠用 gdb debug 的情況有..

1. 用 gdb 來跑 program
> gdb your_prog
然後在下 run
來跑程式,或設 breakpoint 等等
( 關於 gdb 的使用,請參照 reference )
2. 用 gdb 來 detach 正在跑的 program
> gdb your_program process_id
這個方法就是先查出你要查的 process id
然後用 gdb 把這個程式停下來
來檢查看看問題出在哪
3. 有時候有的程式因為一些因素 ( 如 memory access violation )
而造成 core dump ( 這個會在作業系統留下 xxx core dump 的 message )
通常會在程式執行的 dir 產生 xxx.core 的 core file
這時候我們也可以用
> gdb your_program core_file
來做 debug 的動作
4. 最後,我們可以用 gcore(1) 這個程式
把正在跑的程式在 memory 的 image 抓成一個 core file
再用 gdb 來觀察這個 core file
5. 另外,在程式沒有 compile with -g option 的情況下
我們還是很常用到 gdb 的一個方法是 backtrace 這個指令
這個可以用來觀察程式的 call stack。
可以知道程式卡/死在哪個 function call 內

2. 觀察和 process 有關的資訊

很多情況下,我們的程式不一定有加上 -g 的 debug 參數
這個時候,有一些比較能 locate 問題的 system utils 可以幫助我們

1. truss(1)
這個可以用來觀察某個 program 使用的 system call
比如說 open(), close() 等等
這個可以讓我們了解到這個 program 正在 access 哪些檔案
卡死在哪個地方
ex: > truss -p process_pid
2. fstat or sockstat
用 sockstat | grep process_pid
可以查到這個程式開的 local address/port 及 foreign address/port

find 的用法

Syntax: find pathname-list expression

-name filename
-perm octnum
-print
-type t/f/c/b t:目錄 f:檔案 c:字元特殊檔 b:區域特殊檔
-exec rm -rf “{}” \;
把pathname-list裡所有file通通砍掉
-size n
+n (大於n)
-n (小於n)

-mtime n (幾天內被修改過)

example:
find ~ -name “*.c” -print
find / -size 0 -exec rm “{}” \;
find / -perm 4755 -print
find ~ -type d -print

實例:
找到大於10mb的檔案並刪除之
find . -type f -size +10000 -exec rm “{}” \;

找到所有包含 blahblah 字串的檔案
find . -type f -exec grep -l blahblah “{}” \;

列出所在目錄下所有檔案
find . -type f -print

Enable Soft-Updates

tunefs -n enable + 掛載區

怕忘記所以寫起來:~

利用 apt-file 來搜尋檔案/套件名稱

最近因為某些需求,開始回頭用 Ubuntu/Debian

最近有人問我,有沒有辦法找出某個已安裝的套件名稱,或者找出某個檔案屬於哪個套件

前者可以用 dpkg 或 dlocate -S 來達到目的

不過後者我當時回答不上來

找了一下資料,apt-file 似乎是個不錯的 tool

安裝 apt-file
sudo apt-get install apt-file
更新 apt-file 的資料
sudo apt-file update
利用 apt-file 找出套件
sudo apt-file search gcc-3.4

還有許多有趣的玩法及組合,就慢慢參考 man manual 吧:p

喜?憂?

昨晚奮鬥很久,終於重新把這個 blog 再度弄起來。這個 blog 一直都是多災多難,歷經 database 損毀、硬碟損毀等奇怪原因,前前後後倒站過三次,最近想寫些東西,但是又不想寫在 bbs 上面,所以昨晚一鼓作氣把東西弄好了…。心得晚點再寫:p