之前在Leopard (Mac OS X 10.5.X)的時候,都是靠Macports在討生活的,大部份我常用的ports都還Maintain的不錯,但到了Snow Leopard (Mac OS X 10.6.X) 的年代,發現許多ports都被發的bug都一直掛著沒人維護,小弟只好自力救濟了。像是著名的GDB神器,在console底下,只要下個 port search gdb ,就會出現這麼樣一個東西:gdb @6.8 (devel)
6.8版,還蠻新的嘛。接著再下 sudo port install gdb ,就會出現底下不堪入目的畫面
GDB: The GNU Project Debugger---> Computing dependencies for gdb
哪泥......macports裡頭竟然連gdb的檔案都沒放了,不再是萬能的了,此時只好靠萬能的”source code”以及"gcc"了,心想只要有心,沒有porting不過來呀...科科,就是這"灌C"的威力。先來抓個最新版的weekly build的GDB來嚐鮮一下
---> Verifying checksum(s) for gdb
Error: Target org.macports.checksum returned: Could not open file: /opt/local/var/macports/distfiles/gdb/gdb-6.8.tar.bz2
Error: Status 1 encountered during processing.wget ftp://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-7.0.50.20091110.tar.bz2
接著, bunzip2 gdb-*.tar.bz2 解開這壓縮檔。重點戲來了,configure一下,藍色字是key point,記得加,這是在Snow Leopard上編gdb成功的關鍵: $ ./configure --disable-werror --build=x86_64-apple-darwin10 --prefix=/Users/kent/usr
這個時候build成功了,很開心的跑 gdb ./hello ,我想應該會出現
$ make && make installGNU gdb (GDB) 7.0.50.20091110
心想,搓屎…怎麼會這樣,找不到debug symbol..囧rz。(後來發現,好像每次都會出現,但還是可以正常使用,先不管…堪用),再接著執行
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin10".
For bug reporting instructions, please see:
Reading symbols from /Users/kent/RD1-2/practice/GDB/gdb-samples/hello...(no debugging symbols found)...done.
(gdb) (gdb) b main
後來求助於Google,似乎是權限的關係,假使你當初就用root權限安裝的話,就沒這問題了。若你和我一樣喜歡安裝在個人目錄下(有代--prefix=/Users/xxx/參數),記得將gdb作個權限相關設定
Breakpoint 1 at 0x100000f0c: file hello.c, line 6.
(gdb) run
Starting program: /Users/kent/RD1-2/practice/GDB/gdb-samples/hello
Unable to find Mach task port for process-id 80958: (os/kern) failure (0x5).
(please check gdb is codesigned - see taskgated(8))
(gdb) $ sudo chgrp procmod /yourpath/gdb
$ sudo chmod g+s /yourpath/gdb
前一篇有個網友提到的擾人的"^M"符號的問題,果然從gdb v6.3.5升到gdb v7.0之後就迎刃而解了,照慣例,抓張圖吧。
Tags Cloud
My Secret Notebook (我的火星文記事本)
mm0NiDU82M4jV6t2RBCBrz25cuC9sjNwAuamtlEmcM1VguTu
hVs5vX7xayeXoDLwLRIsXDdxVSYNoZecdMY16+hwqpbgm2ch
78a90t0Gr9zL74TcZYwjdl3BbmnCRBJjD88dRHxdcPqIiDGp
zWe9q/XdSxe6yXKdh/hwQJ+D+o6XPWboby+RmoOtn9wmdQnN
o8h7BKWLQQMO+5XEV0RDZmUO3X7ADN8bzC8JmhP1BVP2V80d
Fs3ohWPSt7UBKnHCwI5tyeakRQihDKCzfiP7F0J+spSxCSlR
PqAj0w88PWB2ax8Y2++K/XMFHF6VuSeRhSMCaExmTTLqngxc
WlEA551OvUriquyW8QQc6jVg8lQn4m4H78QgUPvc2F3LsYKm
fd9HLa+mXrnTgh4SfgyUmS84BZdoGpMbfM4OpuWgFVZcN2e/
uKhuJm7md4G0wyo7efCLPwWWWqxZG8yzwQAHDQr5p/3xZeX4
qjMXzpXiwCqLzTGbZPqx9XMDqtrardSQNAw3dJgxgWALNzyu
/OOiDZGnobvYgDXDRuMQHo1k7gvSR7J+SNIbw7cd4696ChIL
c97GW+hdMcpTOcK9dhIKK8tXDJxiM7OSA28KCN4Wn3N1iJ9y
w4Y6W4GqbSiRxrze5zwOGeG5SbvrYvJ4LSDgND6fszdE43uk
PoPKYyfg3r4JcwrcqDJXcv1jWDuLi1swUK8lXhLLA7Ahfl8a
r+3IJJ4bnUASn9UiEMRZsOKJvK83A/TVZTS5QTz9etA60x7T
67VlH432PnH/ktoaE1XmqhbFgZ7v9UD7ujgxFMYvJ7Y9dNcI
bd3iUVa9EmudYLEuw4Otze1lLL3NQgUb+NNjgKx7r6bUHdmZ
WW7V9g==
My Flickr
[+/-] |
[Mac/Snow Leopard] build GDB v7.0 from source |
[+/-] |
[VimGdb = vim + gdb] build vim from source with vimgdb patch |
我想對於vim和gdb的搭配,最完美的組合莫過於vimgdb這個patch了。前一陣子在苦腦怎麼樣的環境會讓我操作gdb這個神器最順手呢?! 讓我能夠remote debugging在ARM開發板上的程式得心應手呢 ^^ ?! 先來張snapshot吧!
※你看,在PTT->LinuxDev版上,連宅色夫(jserv)大神都推薦,沒道理不用呀...囧rz
在X11(X-Window)的底下的話,DDD, Insight都還算順手,但這時就得在PC上跑個X Server (推薦 Xming: X Server for Windows),有點太浪費資源了,有時只為解個小bug,我想不用出動ddd, insight這種機絲吧。
在Console底下的話,我想 gdb --tui 或是 cgdb 就蠻好用了,但身為一個VIMer,若能將gdb整進vim就更完美了,果然你想到的東西,別人都想過了...也作好了...XD! Great,有現成的就直接拿來用啦。用過之後,越來越順手,反應速度當然也比ddd,insight這些x11的app快些,果然還是CLI模式順手呀。
Clewn(for gVim) / vimGdb(for Vim) 官網:
http://clewn.sourceforge.net/index.html
安裝過程很簡單,只要三個部驟。首先,去vim官網抓這包source code (vim-7.2.tar.bz2),接著抓vimgdb(for vim72)這個patch檔。最後就是先解開以上兩包,再上patch啦。官網教學在此,小結如下:
1. tar xjf vim-7.2.tar.bz2
2. tar xzf vimgdb72-1.14.tar.gz
3. patch -d vim72 --backup -p0 < vimgdb/vim72.diff
4. cd vim72
#重點是configure時,記得加上--enable-gdb這個參數
5. ./configure --enable-cscope --enable-gdb --enable-multibyte --disable-gui --enable-gui=no --without-x --disable-gpm --disable-nls --with-tlib=ncurses --enable-pythoninterp --prefix=/home/kent/usr/
6. make && make install
NOTE: 在Ubuntu 9.10 和 Snow Leopard (Mac OS X 10.6.2)底下build這vim時遇到了一個問題,build出來的vim,一跑起來就出現 *** buffer overflow detected ***: ./vim terminated ,後來Google之後,也有人遇到這個問題,後來繼續追下去,追到GNU gcc的bugzilla去了,有人發了一個bug給gcc : vim crashes on startup when compiled with -O3 but works with -O2,裡頭提到產生這問題的關鍵點,記錄一下,或許以後會遇到,最終這個bug被歸類為 "RESOLVED INVALID"
===============================================
NOTE: In Ubuntu 8.10 and later versions, -D_FORTIFY_SOURCE=2
is set by default, and is activated when -O is set to 2 or higher.
This enables additional compile-time and run-time checks for several
libc functions. To disable, specify either -U_FORTIFY_SOURCE or
-D_FORTIFY_SOURCE=0.
===============================================
The difference between -D_FORTIFY_SOURCE=1 and -D_FORTIFY_SOURCE=2
is e.g. for
struct S { struct T { char buf[5]; int x; } t; char buf[20]; } var;
With -D_FORTIFY_SOURCE=1,
strcpy (&var.t.buf[1], "abcdefg");
is not considered an overflow (object is whole VAR), while
with -D_FORTIFY_SOURCE=2
strcpy (&var.t.buf[1], "abcdefg");
will be considered a buffer overflow.
============================================
所以,在 Ubuntu 及 Snow Leopard 底下,若要build vim from source的話,請記得加上 CFLAGS="-O3 -D_FORTIFY_SOURCE=1",將我常用的configure參數記錄如下:
./configure --enable-multibyte --enable-cscope --disable-gui --enable-gdb --prefix=/Users/kent/usr/ CFLAGS="-O3 -D_FORTIFY_SOURCE=1"
[+/-] |
[Apple] Magic Mouse |
登登登登…新玩具 Magic Mouse 來啦,感謝本公司同事macglee大大熱情贊助,遠從日本空運回國,台灣還沒上市。在還沒被弄髒之前,趕緊來幫它Take a picture,雖然它的設計應該很難髒掉,一直都會閃亮亮....來個偽開箱文唄
這隻魔術鼠還挺好用的,使用前記得"洗手"...囧,再加個鼠墊,因為用雙指作"左撥、右撥"的那個手勢,若手指黏黏的話,加上老鼠沒穿NIKE球鞋,抓地力不怎麼好,一撥…整隻就跟著跑掉了.....其它的部分都令人很滿意,加上沒有上一代老前輩 "Mighty Mouse"必需常清G"點"的困擾,對我來說更有吸引力,贊啦!.官網:http://www.apple.com/magicmouse/
[+/-] |
[Cool] Wordle |
蠻有趣的一個Service,是用Java Applet寫的,真是難得呀...run起來的反應速度還挺快的,比想像中順多了...。官網在這 http://www.wordle.net/ ,簡介如下:
Wordle is a toy for generating “word clouds” from text that you provide. The clouds give greater prominence to words that appear more frequently in the source text. You can tweak your clouds with different fonts, layouts, and color schemes. The images you create with Wordle are yours to use however you like. You can print them out, or save them to the Wordle gallery to share with your friends.
.Wordle - Kaie's Blog :
.Wordle - VIVOTEK :
[+/-] |
[Mac] MacPorts on Snow Leopard (Mac OS X 10.6.1) |
後來在MacPorts的wiki上看到了這篇 Migrating a MacPorts install to a new major OS version or CPU architecture,並且想到之前還小懵懂無知,對於ports的操作也還不太熟,MacPorts被我惡搞,亂裝了一些有的沒的,既然現在要整理一下,那麼就...就通通砍掉重練吧吧吧....照著底下作就對了:
- 首先將原本安裝過的軟體清單備份起來
port installed > myports.txt
- 接著將所有安裝的軟體幹掉
sudo port clean installed
sudo port -f uninstall installed - 最後呢,一一裝回被移除的軟體吧
sudo port install portname +variant1 +variant2 ...
因為工作上與習慣的關係,漸漸地往CLI(Command-line interface)魔人一路邁進,對於GNU/Linux的CLI比較熟悉,由於Snow Leopard (Mac OS X)是屬於 *BSD Unix ,像是ls, find, grep...一些基本的指令多少有些差異。藉由強大的Macports,我們可以將Snow Leopard的CLI環境弄得跟GNU/Linux的類似,記得要要加"with_default_names"這個variant,這樣子build出來的binary才會以預設的app name,而不是g開頭的(Ex: gls(ls), gfind(find), gawk(awk)...)。底下這幾個ports就是我們的主角:
◎GNU Core Utilities:
coreutils
findutils
gawk
grep
gsed
bash
(安裝方式: sudo port install coreutils +with_default_names)
----------------------------------------------------------
◎順便記錄一下個人常用的:
bash-completion
cflow
ctags
cscope
htop
irssi
lesspipe
git-core
subversion
vim
colordiff
cowsay
wget
[+/-] |
[Vim] call man in Vim & Viman = Vim+Man |
若要在Vim裡頭呼叫男人 man 來作查詢的動作,這在C/C++ Programming時很方便,不需要再切出去查詢"Linux Programmer’s Manual"。如下圖所示
使用方式如下:
1.在你的.vimrc裡頭加入底下兩行,即可使用 K 來call man:runtime! ftplugin/man.vim
nmap K <esc>:Man <cword><cr>
2.將這個我修改過的man.vim放置你的 .vim/ftplugin/ 底下(若目錄不存在,請自己建)
接下來是介紹viman這個小工具,使用方式跟man一樣,只不過是透過Vim來呈現。如下圖所示
安裝方法: 首先,將上面"在Vim裡叫男人"的方式先導入,接著將viman這個script放置你的PATH底下,就可以透過 viman fopen 指令來查看fopen手冊了。除了有syntax highlight之外,更棒的是,在這個viman底下看男人,還可以在keyword(如上圖綠色字, ex: ungetc(3))上按 Ctrl + ] 就可以跳到此keyword的說明,反之按 Ctrl + t 就可以再跳回上一層,如同Vim + cscope/ctags 的操作一般。
[+/-] |
[Vim] Crazy Home Key (crazyhomekey.vim) 讓你的<Home>鍵更好用 |
在使用了Vim這麼長一段時間之後,終於Release了人生第一個Vim Script :"Crazy Home Key",Po文慶祝一下。其實應該稱之為"Fuzzy Home Key"比較好懂些,但都上傳上去了,就算了。終於對Vim社群終於有點回饋!發現在http://www.vim.org/上面似乎找不到類似功能的東西,於是就自己手動刻一個吧。在c9s大的指導之下,完成了這個不到50行的一個小工具...已符合我目前的需求了,先將就點用吧! 有需要的人去下面的Link抓吧~~.Name: Crazy Home Key
.Description: 模擬一些像是UltraEdit, Notepad++, VC 之類的IDE輯編器,按<Home>鍵時是跑到”行首 (^ key in Vim)”,也就是第一個非空白字元處,而不是"這一行的最前面(0 key in Vim)"。若此時再按一次<Home>鍵,才會到最此行的最前面,加速編輯。並且在Vim的Insert模式下也可正常運作!
.URL: http://www.vim.org/scripts/script.php?script_id=2772
.Demo: http://vimeo.com/6433112 (可能有點太快,看不太懂)
[+/-] |
[Cool Film] 西港慶安宮 - 哥吉拉大將軍 |
來自我家老大小黑老家的台南縣西港鄉慶安宮之「哥吉拉大將軍」實在是太屌啦,這次去台南玩,最遺憾的事莫過於未能親見目賭,並且幫「哥吉拉大將軍」拍一張帥氣勇猛的照片,原因就是快回台北時,才聽小黑弟說,才知道真的有那麼一回事,恨呀。。。
後來經Google大神查證之後,發現還真不少相關文章呀,連新聞報導都有了,我只能說「哥吉拉大將軍」實在太威了,連「癮科技」都有相關文章,話說敝公司(VIVOTEK)產品似乎未曾出現在Engadget勒,哇操...輸了.影片來源:恐龍也拜 神像超像「哥吉拉」
.Engadget.tw: 到台灣廟裡打工的哥吉拉
.哥吉拉大將軍
[+/-] |
[NBA Film] 誰是老大? ... 好嗨,好懷念! |
雖然是「威力導演試用版」剪出來的...囧,但無傷影片所要傳達的精神,而且裡面有出現「塞恁娘老Baboo」,害我不自禁的笑了...囧rz!!
[+/-] |
[IE8] IE=EmulateIE7 / 暫時解決IE8 layout問題 |
之前會為了解決IE6,IE7不符合W3C Standard實作所造成的layout問題,特地加了些CSS Hack來解決,但隨著Micro$oft的良心發現,IE8已經有"改邪歸正"的趨勢了,所以反而造成layout亂掉的問題,所以若能用IE8開啟,但模擬IE7的行為的話,就能暫時解決問題..算是一個workaround的solution,參考看看吧,在<head>中加上以下這行即可<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
參考資料來源:IEBlog:
1. http://blogs.msdn.com/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx
2. http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx
[+/-] |
[問卷] 美髮業相關 |
是的,你沒看錯,徵求路過的人,幫忙填寫一下問卷,雖然沒有7-11禮卷可以贈送,也沒有P幣,更沒有新台幣...囧rz,我想只能以身相許了(若您不介意的話...XD),感謝在先...留言前5樓可免費獲得人氣AV套圖一份,記得留下E-Mail.連結:http://www.my3q.com/home2/277/wen_ging0116/4723.phtml
.主題:「商業友誼、系統服務公平性與服務品質對美髮業顧客滿意與忠誠之間的關聯性影響」
.簡介:這是一份學術性的研究問卷,希望藉由您所提供的寶貴經驗與看法,讓本研究可以順利進行,您所填答內容絕不會對外公開,亦不另作它用,請您放心填答。感謝您抽空完成此份問卷,在此向您至上最深的謝意。
[+/-] |
[Linux/Vim] Vim session manager |
在使用Vim的時候,時常會在不同的Project或是Module之間切來切去,在修改某個Module時,有時變動比較大,不是短時間就可以修改完的,亦或是偶爾會有些Interrupt,必須馬上停止目前的工作,切換到另一個project去...切很大、切不用錢...囧rz,通常一個module一改就得開好幾個檔案,這時想到若能有相關的Tool來達到這應用不知該有多好,心想強大的VIM肯定有類似的plugin可用。
於是乎馬上求助於Google大神,尋找輔助工具,一開始找到了vim內建的mksession,的確可以達到我想要的,但並不是那麼的好用,有些小細節要再tune一下,心想 Vim Scripts 站肯定有許多好心的強者包裝好更方便的plugin了,因此就找到了底下這個好玩意.Description: Vim provides a ':mksession' command to save the current editing session. This plug-in helps to work with Vim sessions by keeping them in the dedicated location and by providing commands to list all sessions, open session, open last session, close session, save session and show last session. From a list of sessions you can open session, delete session, edit session and edit extra session script. Please note that session name can contain spaces and does not have to have a .vim extension.
它幾乎具備了所有我想要的功能了,但美中不足的是,這plugin並沒有考慮到"set autochdir"這個option(這是項好東西呀,我已被寵懷了,不行沒有它呀),這個option會導致透過Vim session manager所產生的檔案的路徑有點錯亂(即使是原生的mksession也有這問題),相關的討論串在此,看來也不少人遇到這問題。將那個workaround solution加進sessionman.vim之後... Perfect! 推薦給有需要的人…
.Link: sessionman.vim : Vim session manager
[+/-] |
[Mac] Keyfixer 0.4 for Firefox and Thunderbird |
這真是個好東西呀,原本在Mac OS X版本的Firefox的key binding和Windows的有點差異,像是Home/End按鈕在Mac上是無效的,必預按⌘+left(Home)以及⌘+right(End),個人覺得有點難按,不太習慣,後來Google了一下,發現這位仁兄跟我有同樣的困擾,於是手癢生出了這個patch,相關下載資訊如下Description: Patches the key bindings for Mac OS X users of Firefox and Thunderbird to match the key bindings of Windows.
Download: https://addons.mozilla.org/en-US/firefox/addon/9796
[+/-] |
[Mac] Apache web sharing bug - 為何"網頁共享"會失效 |
這幾天心血來潮,想說將我的Max OS X的Apache (Http server - httpd)跑起來玩看看,畢竟在Mac OS X很多事只要簡單的設定一下就OK了,如下:
但這次踢到鐵板了,在連到最上層的網頁根目錄 (http://localhost/) 是OK的,代表apache有成功run起來,但在針對個人帳戶這邊,也就是 http://localhost/~username/,怎麼連就是會出現 403 Forbidden.
真是見鬼了,只好求助於Google大神,後來發現,若啟動了"網頁共享"服務的話,在針對個人用戶方面,Mac OS X應該在此目錄下
You don't have permission to access /~username/ on this server./private/etc/apache2/users/
新增一個和你的username相關的username.conf設定檔,但卻發現此檔案卻不存在於此,因此請自行新增一個吧,內容如下:<Directory "/Users/username/Sites/">
之後記得重新啟動apache使生效
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>sudo apachectl restart
[+/-] |
[CSS/htc] IE PNG Fix v2.0 Alpha 3 |
新版的IEPNGFix v2終於出來了,作者提到此版吸引人的Feature在於 "support for background position and repeat." Wonderful..,多了此項新功能大概能夠應付八九成的狀況了,IE6也可以不再那麼ugly了...囧rz!.資料來源: IE PNG Fix
備註:之前發現同樣的code在本機端,以及某個HTTP Server上是可以work的,但有遇到某些HTTP Server卻無法work的情況,這是由於MIME TYPE不support所造成的問題,在原作者網頁以及http://support.microsoft.com/kb/306231這裡有提到,必需替.htc檔新增一項"text/x-component"的MIME type。
.載點: http://www.twinhelix.com/test/iepngfix.zip