显示断点测试
来源:互联网 发布:淘宝流量充值失败 编辑:程序博客网 时间:2024/05/20 06:23
开发J2ME程序过程中,最困扰人的问题就是程序容易莫名其妙地死机。当使用JBuilder或者CodeWarrior设置断点功能来查找程序错误时,死机的概率就更大了。即使不死机,也会担心程序受到了意外的干扰,所以一般不推荐使用开发工具自带的断点功能。但有时候又需要一个功能来显示当前各变量的值,以便查错时做出正确的判断。于是我想了一个办法,就是编写自己的断点函数。具体代码如下:
public class BlocksCanvas extends Canvas implements Runnable{
private boolean stopFlag=false;
//调试标志......public void run()
{//断点位置1testFun(“x:”+x+“y:”+y);
......//断点位置2testFun(“”);......
}private void testFun(String str)
{
stopFlag=true;//画一个白色长方形
bg.setGrayScale(255);
bg.fillRect(0,0, fontW, fontH);//在白色长方形上显示str的内容
bg.setGrayScale(0);
bg.drawString(str, 0,0, Graphics.TOP Graphics.LEFT);
repaint();
while(stopFlag)
{}}
public void keyPressed(int keyCode)
{ stopFlag=false;} }
首先定义一个boolean类型的stopFlag变量来记录调试标志。一开始它的值为false,进入testFun()函数后,值设为true。显示完str的内容后,因为stopFlag的值为true,所以while语句进入了死循环,程序停了下来。这时可以仔细地看清楚变量的值。然后当按下任意键时,keyPressed()函数捕捉到这一事件,将stopFlag设为false,死循环自动解开。使用此方法非常方便,只要在需要断点的地方放置testFun()语句即可,一个程序可以放置多个testFun()语句,在循环语句中也可以放置testFun()语句。程序运行到testFun()语句会自动停下显示变量值,按任意键程序又会自动运行,程序也不会受到意外的干扰。图1是调试时的截图。
还有一点需要说明,此方法的testFun()语句必须放在run()函数中或者run()函数运行时调用的函数中,否则就会因为while()占用了所有CPU时间而导致keyPressed()函数无法捕捉按键事件,最后导致死机。
此方法只要稍加修改,就可以用做游戏的暂停功能,而且比sleep()方法好,毕竟理论上sleep()方法不能无限期暂停下去。下面给出相应的代码:
public class BlocksCanvas extends Canvas implements Runnable
{private boolean stopFlag=false;//暂停标志
......public void run()
{......testFun();......}
private void testFun()
{ while(stopFlag){}}public void keyPressed(int keyCode)
{
int action = getGameAction(keyCode);
if(action== FIRE)stopFlag=!stopFlag;}
}
该程序段的功能为,当使用者按下FIRE键时,游戏暂停;再次按下FIRE键,游戏继续运行
- 显示断点测试
- 断点测试
- Java断点测试学习
- 前端断点测试
- 前端断点测试
- 我的断点测试函数
- php断点测试的方法
- 使用fiddle进行断点测试
- ionic 真机测试断点
- Myeclipse 显示断点调试工具条
- dump函数,给php加断点测试
- android studio中做断点测试
- Java 实现的断点下载(未测试)
- 分享一个断点测试的博客
- Eclipse调试断点处无法显示箭头
- gdb: info breakpoints显示所有断点
- xcode中c++变量断点不显示
- eclipse 断点进不去 显示 source not found
- SGA_MAX_SIZE与SGA_TARGET
- 有才,能力强;有德,阻力小----《程序员职场第一课》读后感
- Fedora13安装nvidia显卡驱动
- pku 1042 Gone Fishing dp
- VC调试动态库以及Com组件代码的方法
- 显示断点测试
- 《大话设计模式》之 简单工厂模式和策略模式的区别和相同之处
- UML概念:关系
- VC程序最小化到托盘
- 判断iframe或脚本对象是否加载完毕的方法(兼容ie和Firefox)
- UML中各种关系说明以及举例
- 交叉编译的概念(关于嵌入式的一点儿知识)
- 关于BindingManagerBase类
- C++线程池(Windows)