ʹÓà Java Debug Interface£¨JDI£©µ÷ÊÔ¶àÏß³ÌÓ¦ÓóÌÐò
±¾ÎÄ¶Ô Java Debug Interface£¨JDI£©¼°ÆäʹÓýøÐÐÁ˽éÉÜ£¬²¢Í¨¹ýʵÏÖÒ»¸ö¶àÏ̷߳ÖÎöÆ÷µÄʾÀýÓ¦Óã¬ÑÝʾÁËÈçºÎÀûÓà JDI ¿ª·¢×Ô¼ºµÄ¶àÏ̵߳÷ÊÔ³ÌÐò¡£¸ÃʾÀý·ÖÎöÆ÷ÔÚ¶ÀÁ¢ÓÚÄ¿±ê³ÌÐòµÄǰÌáÏ£¬ÒÔµ¥¸öÏß³ÌÁ÷Ϊµ¥Î»£¬°ïÖú×·×ټǼ¶àÏ̵߳ÄÖ´Ðйý³ÌÐÅÏ¢¡£
¶àÏ̻߳·¾³ÏµijÌÐòµ÷ÊÔÊÇÈÿª·¢ÕßÍ·Í´µÄÎÊÌâ¡£ÔÚ IDE ÖÐͨ¹ýÌí¼Ó¶ÏµãµÄ·½Ê½µ÷ÊÔ³ÌÐò£¬ÍùÍù»áÒòΪͣÔÚijһÌõÏ̵߳Äij¸ö¶ÏµãÉ϶ø´íʧÁËÆäËûÏ̵߳ÄÖ´ÐУ¬Ïß³ÌÖ®¼äµÄµ÷¶ÈÍùÍùÎÞ·¨Ô¤ÆÚ£¬²¢ÇÒ»áÒòΪ¶ÏµãÓ°ÏìÁËʵ¼ÊµÄÏß³ÌÖ´ÐÐ˳Ðò¡£Òò´Ë£¬ÔÚµ÷ÊÔ¶àÏ̳߳ÌÐòʱ£¬¿ª·¢ÕßÍùÍù»áÑ¡Ôñ´òÓ¡ Trace Log µÄ·½Ê½À´°ïÖúµ÷ÊÔ¡£
ʹÓà Log À´°ïÖúµ÷ÊÔµÄÎÊÌâÔÚÓÚ£¬¿ª·¢ÕßÍùÍùÎÞ·¨Ô¤ÆÚÄÄЩ¹Ø¼üµãÐèÒª¼Ç¼£¬ÓÚÊÇÔÚÕû¸ö³ÌÐòµÄµ÷ÊÔ¹ý³ÌÖУ¬ÐèÒª²»¶ÏµÄ¼ÓÈë Log µ÷Ó㬱àÒëÉú³É¿ÉÖ´ÐгÌÐò²¢²¿Êð£¬Õâ¶ÔÓÚ´ó³ß´çµÄÈí¼þ¿ª·¢ÏîÄ¿ÎÞÒÉÊÇØ¬ÃΣ¬»áÖ±½ÓÓ°Ïìµ½¿ª·¢Ð§ÂÊ¡£
ÓÐûÓÐÒ»ÖÖ°ì·¨£¬¿ÉÒÔ¶ÀÁ¢ÓÚ³ÌÐò´úÂ룬ÄÜÔÚÔËÐÐÆÚ¼ä°ó¶¨µ½³ÌÐòÉϲ¢»ñÈ¡³ÌÐòÔËÐйý³Ìµ±ÖеĹؼüÐÅÏ¢ÄØ£¿¸üÖØÒªµÄ£¬ÕâÖÖ·½·¨Ó¦¸ÃÊǿɶ¨ÖƵģ¬¿ª·¢Õß¿ÉÒÔͨ¹ýÉÙÁ¿µÄŬÁ¦£¬¾Í¿ÉÒÔ´ïµ½ÌØ¶¨µÄµ÷ÊÔÄ¿µÄ¡£´ð°¸Êǿ϶¨µÄ¡£Í¨¹ýʹÓà Java Debug Interface£¨JDI£©£¬¿ª·¢Õß¿ÉÒÔ¿ìËÙ¿ª·¢¶¨ÖƳöÊÊÓÃÓÚ×Ô¼ºµÄÏß³Ì Profiling ¹¤¾ß¡£ÕâÑùµÄ¹¤¾ß¶ÀÁ¢ÓÚÖ÷³ÌÐò£¬²¢Çҿɸ߶ȶ¨ÖÆ¡£ÔÚ½ÓÏÂÀ´µÄÎÄÕÂÖУ¬ÎÒÃǽ«½éÉÜÈçºÎʵÏָù¤¾ß¡£
ÈÏʶ JPDA ºÍ JDI
´Ó J2SE 1.3 ¿ªÊ¼£¬Java ¿ªÊ¼ÌṩÁËÒ»Ì×½Ð×ö Java Platform Debugger Architecture£¨JPDA£© µÄ¼Ü¹¹£¬¿ª·¢Õß¿ÉÒÔͨ¹ýÕâÌ׼ܹ¹À´¿ª·¢µ÷ÊÔÓóÌÐò¡£ÕâÌ׼ܹ¹±»Ö÷Á÷µÄ Java IDE£¨Èç Eclipse¡¢NetBeans µÈ£©¹ã·ºµØ²ÉÓá£
JPDA ÏêÇé
¸ü¶à¹ØÓÚ JPDA µÄÏêϸ½éÉÜ£¬¿ÉÒԲμû JPDA ¹Ù·½Îĵµ ÒÔ¼° “ÉîÈë Java µ÷ÊÔÌåϵ”ϵÁÐÎÄÕ¡£
¾ßÌåÀ´Ëµ£¬JPDA ²»½ö½öÊÇÒ»Ì× API µÄ×éºÏ£¬Ò²²»Ö»ÊÇÒ»¸ö¾ßÌåµÄ¹¤¾ß¡£ÕâÌ׼ܹ¹ÌṩÁË´ÓÄ¿±ê³ÌÐò¡¢µ÷ÊÔË«·½µÄÐÅÏ¢ÐÒ飬µ½¹©¿ª·¢ÕßʹÓõĽṹµ÷Ó㬶¼Ò»Ò»×ö³öÁ˶¨Òå¡£ÔÚ J2SE 5.0 ÖУ¬ËüÓÉÈý¸ö²¿·Ö×é³É£º
Java Virtual Machine Tools Interface£¨JVMTI£©£¬ÊÇÒ»Ì׵ͼ¶±ðµÄ native ½Ó¿Ú¡£Ëü¶¨ÒåÁË Java ÐéÄâ»úËù±ØÐèΪµ÷ÊÔÌṩµÄ·þÎñ½Ó¿Ú¡£JVMTI ÔÚ Java 5.0 ֮ǰµÄǰÉíÊÇ JVMDI£¨Jave Virtual Machine Debug Interface£©¡£
Java Debug Wire Protocol£¨JDWP£©£¬¶¨ÒåÁ˵÷ÊÔË«·½ÐÅÏ¢ºÍÇëÇóµÄÎı¾¸ñʽ¡£
Java Debuger Interface£¨JDI£©£¬¶¨ÒåÁË´úÂë¼¶±ðµÄµ÷ÊÔ½Ó¿Ú¡£
´Ó¿ª·¢ÕߵĽǶÈÀ´¿´£¬µ÷ÊÔ¹¤¾ßµÄ¿ª·¢¼È¿ÉÒÔ»ù
Ïà¹ØÎĵµ£º
import java.awt.*;
import java.awt.event.*;
public class TestFrame {
Frame fm = new Frame();
public void init(){
fm.setSize(300,300);
Button btn = new Button("ok");
fm.add(btn);
btn.addActionListener(ne ......
½ñÌì³é¿ÕÏÂÁË¡¶java½â»ó¡·Õâ±¾Êé¿´ÁËһϣ¬È·Êµ²»´í£¬Ìá³öÁ˺ܶàÎÒÃÇÆ½Ê±²»»á×¢ÒâµÄСÎÊÌâ¡£ÏëÏëÈç¹û²»×¢Òâ˵²»¶¨»áÒòΪһ¸öBUGÓôÃÆ¸öÒ»Á½ÌìÒ²ÕÒ²»µ½¡£ÒÔÏÂÊÇ×ܽáµÄ±Ê¼Ç£¬±¸Íü~~
1.ÅÐ¶ÏÆæÊý
i % 2 == 1 ÔÚi Ϊ¸ºÊýʱ½á¹ûΪ-1£¬ËùÒÔʹÓÃi % 2 != 0À´Åжϣ»µ±ÓÐÐÔÄÜÒªÇóʱʹÓà (i & 1) != 0¡£
*ÔÚʹÓÃ%ʱһ¶¨Òª¿¼Âǵ ......
package tf;
public class TestPack {
public static void main(String [] args)
{
try
{
IAnimal cAnimal = new bird();
cAnimal.shout();
IAnimal animal =(IAnimal)java.lang.Class ......