2010年11月22日 星期一

Windows下Eclipse CDT 觀看C++反組譯的組合語言

最近很喜歡看一些程式碼變成組合語言的時候是長什麼樣子

正巧eclipse CDT就有提供類似的功能

當ecliplse 切換到debug view的時候

可以在Window->Show View  裡面找到Disassembly的選項

而在裡面還有像是Memory跟Registers(看暫存器內容)等好用的選項



Debug View的介紹可以看看

http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.jdt.doc.user/reference/views/debug/ref-debug_view.htm

不過我一開始在試驗的時候出現了

Error while launching command: gdb --version

這樣的一個錯誤

因為Debug View的功能必須在debug而非run的時候才有其功用

而我用的MiniGW版本裡面卻沒有debug必須要有gdb元件

所以後來上網下載gdb.exe放到C:\MinGW\bin裡面就解決了這個問題

找windows的gdb載點也花了不少功夫

下面提供一個6.8版的直接載點(不知道會活到什麼時候)

http://sourceforge.net/projects/mingw/files/MinGW/BaseSystem/GDB/Release%20Candidate_%20GDB%206.8-3/gdb-6.8-mingw-3.tar.bz2/download?use_mirror=nchc

2009年12月17日 星期四

Spring單元測試一點筆記

前一陣子去參加OSSF的Annotation講座
裡面有提到JUnit4作單元測試

下面一個參考網站
http://liyiye.javaeye.com/blog/443239

以往作單元測試的時候都必須去繼承TestCase類別
這無疑阻礙了測試程式的設計,但是使用Annotation為基礎作Unit test的話
不只函式名稱不用被綁死,在設計上也更簡單


2009年12月14日 星期一

[Java]Java呼叫C/C++ DLL

接續上一篇,這一陣子要寫可以動態連結的程式,其實我最先開始想到的就是用windows的DLL(Dynamic-link library )或是Linux的SO(Shared Object)

一來這樣速度快二來這樣子也有個更新的彈性,只是這樣一來可能就無法實現跨平台的優點。
在Java有提供JNI來實驗呼叫c\c++的dll功能

放幾個我參考的網站

一般來說會先寫個.java檔去產生Header。假設今天我一隻程式叫Hello.java
那我可以寫一個批次檔(.bat)去幫我產生要用的header

makeHeader.bat

javac Hello.java
javah -jni Hello
@pause

其中javah這個指令就是用來產生JNI Header,之後產生一個標頭檔叫Hello.h
寫一個.c或是.cpp去實作他產生DLL之後就可以給Java呼叫
不過老實說這樣很不方便,萬一Hello.java要增加新函式就會變得很不方便
因此我會比較建議用JNA+CDT的方式去做,如果要用Windows+Eclipse去開發C++的話,有兩個套件要先裝起來,一個是MinGW,另一個則是CDT


[Java]URLClassLoader運用上的一點筆記

這一陣子接了一個case必須要撈一些網站的資料
由於這是必須多人maintain 的一個系統,要防止對方網頁改版而撈不到資料
因此我想到了Java的dynamic binding功能

在Java原生支援dynamic binding,而他主要又分成Implicit(隱式)explicit(顯式)兩大類

參考資料:http://www.yuloo.com/news/2008-08-27/112873.html