CowNew開源團(tuán)隊(duì)網(wǎng)站 http://www.cownew.com
論壇 http://www.cownew.com/newpeng/
轉(zhuǎn)載請(qǐng)注明此版權(quán)信息
今天做的事情比較雜,所以感想也比較雜:
1、java程序的遠(yuǎn)程調(diào)試。
“JPDA是sun jdk自帶的遠(yuǎn)程調(diào)試機(jī)制。它提供了一套標(biāo)準(zhǔn)的調(diào)試接口,可以從虛擬機(jī)一級(jí)允許外界用特定協(xié)議探測虛擬機(jī)內(nèi)部的運(yùn)作細(xì)節(jié)。只要你裝了jdk 1.2以上的sun jdk,就已經(jīng)有了jpda支持。 只要是用標(biāo)準(zhǔn)JDK中java.exe運(yùn)行的應(yīng)用,就可以用jpda進(jìn)行遠(yuǎn)程調(diào)試。以web應(yīng)用的開發(fā)為例,servlet和ejb的調(diào)試一直不是一件太容易的事情。雖然jbuilder、eclipse等有一些常見的應(yīng)用服務(wù)器,如tomcat, weblogic 6.x,的調(diào)試插件,但是用法各不相同,而且很容易由于版本問題導(dǎo)致出現(xiàn)各種問題,而且對(duì)于有的服務(wù)器則沒有相應(yīng)的IDE插件。
JPDA就不一樣。由于它是java平臺(tái)的標(biāo)準(zhǔn)功能之一,所以我們其實(shí)可以調(diào)試任何用jdk運(yùn)行的程序。只需要做兩件事:
(1)、 在被調(diào)試的應(yīng)用上,增加幾個(gè)java虛擬機(jī)啟動(dòng)參數(shù),讓它啟動(dòng)后進(jìn)入調(diào)試服務(wù)器模式;
(2) 在本機(jī)或網(wǎng)絡(luò)中另一臺(tái)機(jī)器上用某種jpda客戶端程序,attach到被調(diào)試的應(yīng)用程序(可以通過socket或共享內(nèi)存兩種方式)。jpda本身只是一個(gè)接口,調(diào)試工具的好用與否就要看其對(duì)jpda的應(yīng)用如何。jdb是sun jdk自帶的命令行jpda調(diào)試客戶程序,你可以用命令行設(shè)置斷點(diǎn),查看變量值,等等。但不是很直觀。而jbuilder、eclipse的jpda調(diào)試器就做到了將jpda圖形化,可以直觀的設(shè)置斷點(diǎn),跟蹤程序,查看量值,等等。 ”---本段改編自“http://www.cjsdn.com/post/print?bid=7&id=1376”
以elipse+tomcat為例:
(1)打開Tomcat 5.0\bin下的catalina.bat,在“set JPDA= ”下加入如下兩行:
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=8787
(2)啟動(dòng)tomcat
(3)在eclipse的debug中新建一個(gè)“Remote Java Application”,工程選擇被調(diào)試的遠(yuǎn)程程序的源碼工程,host填127.0.0.1,port為8787
(4)運(yùn)行調(diào)試。
這樣我們就可以在eclipse中下斷點(diǎn)調(diào)試tomcat中運(yùn)行的程序了。讓那些亂七八糟的插件哪涼快去哪呆著吧。
注意一定要保證eclipse工程中的源碼和tomcat中運(yùn)行的程序一致。
2、調(diào)用對(duì)象的wait方法的時(shí)候有可能會(huì)拋出InterruptedException異常,以前我是把這個(gè)異常再次拋出,今天運(yùn)行發(fā)現(xiàn)當(dāng)這個(gè)異常拋出的時(shí)候,線程就死掉了。因此不能簡單的將此異常re-throw,必須處理它,比如JDBMonitor中的BlockedChannel的take方法就要如下改寫:
public synchronized Object take()
?{
??if (container.isEmpty())
??{
???try
???{
????wait();
???} catch (InterruptedException e)
???{
????return null;
???}
??}
??Object obj = container.pop();
??return obj;
?}
3、windows下運(yùn)行l(wèi)inux的最好的工具
最近一直想驗(yàn)證JDBMonitor在linux底下是否有bug,但是聽人說過,linux安裝不當(dāng)很容易發(fā)生數(shù)據(jù)丟失,因此一直不敢裝。而用virtual PC,VMWare之類的軟件又太消耗內(nèi)存,而且需要虛擬機(jī)安裝完成再安裝linux。今天無意中搜索到一個(gè)windows下的linux虛擬機(jī):MetroPipe VPM 。
下載地址:
http://www.metropipe.net/ProductsPVPMDownload.shtml
解壓后直接運(yùn)行其中的qemu-win.bat就能啟動(dòng)Linux。不用安裝,啟動(dòng)關(guān)閉都非常快,而且占用內(nèi)存相對(duì)來說比較小。
唯一一個(gè)缺點(diǎn)就是默認(rèn)就進(jìn)入圖形模式,抽時(shí)間看看怎么配置讓它啟動(dòng)以后進(jìn)入字符模式。
詳細(xì)可以參考:http://www.highand.com/viewthread.php?tid=545
?