是否可以在Eclipse中链接条件断点和剪贴簿?

时间:2012-11-20 20:15:55

标签: java android eclipse debugging conditional-breakpoint

是否可以在Eclipse中链接条件断点和剪贴簿?我希望有一个条件断点触发一个剪贴簿代码(自动)运行。有点像...

if(x==4) //Conditional Breakpoint
->Run Scrapbook Code

我知道通过修改源代码可能会很简单,但需要针对生产代码或Codelock进行修改。或者,有没有办法使用其他一些工具? *注意,这适用于Android开发(不确定这是否会影响解决方案)

2 个答案:

答案 0 :(得分:1)

我所知道的唯一方法是条件断点和显示视图的使用。

首先,您将通过

创建条件断点
  1. 右键点击您的断点
  2. 转到断点属性
  3. 启用条件
  4. 输入您的条件
  5. 然后运行您的应用程序,一旦调试器遇到您的断点

    1. 转到显示视图
    2. 输入您要测试的任何代码
    3. 执行该陈述

答案 1 :(得分:0)

所以我发现似乎无法将条件断点链接到剪贴簿。可能有人可能会破解来源以获得断点来调用剪贴簿代码或剪贴簿源的自定义变体;但是,没有实施。

幸运的是,我发现我没有深入研究条件断点的使用,发现它们相当强大,我可以在没有剪贴簿的情况下解决问题。 (在研究它的过程中,我阅读了许多教程,他们都在如何充分利用它们,并在其代码语句中实际执行变量修改。

if(position==0){
testObject=null;
com.example.test.customLogger(getClass().getSimpleName(),"Conditional BreakPoint Code");
}
return false;

需要注意的一些事项,希望他们能帮助别人

  • 虽然上面的代码将正确执行,但在我看来,它有一个奇怪的结构,因为“return false”语句在代码块之外,只有在条件满足时才执行。

    < / LI>
  • 如果返回“false”,调试器将不会停止线程,“true”,它将执行代码并停止。

  • 您可以使用类似下面的内容,尽管不在if语句中,它也会触发断点。 (基本上它接受Java和简单语句)

    “位置== 0”

  • 看来你不能混合简单的语句和java,并且当你这么做时会抛出非常神秘的误导性消息(这让我相信我需要Scrapbooks与条件断点一起使用
  • 您必须在代码块的末尾返回一个布尔值,调试器使用该布尔值来确定它是应该暂停线程还是继续。否则它将抛出关于不返回布尔值的错误,如果你在if块内移动返回它会发生。

如果您的代码高度耦合到类中,这种方法非常有效,这些类在android中由许多方法和对象共享,这使得单元测试很难在事后实现。然而,其他有用的测试途径是:

  • Android Developer's Monkey
  • Android开发者的MonkeyRunner
  • RoboGuice
  • Robotium
  • RobotElectric
  • JUnit(不太可行,因为你无法测试与android框架交互的东西,除非你将它与RobotElectric结合使用)