0

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

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

我知道通过修改源代码这将是微不足道的,但需要针对生产代码或在 Codelock 期间完成。或者,有没有办法使用其他一些工具来做到这一点?*注意,这是针对 Android 开发的(不确定这是否会影响解决方案)

4

2 回答 2

1

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

首先,您将通过以下方式创建条件断点

  1. 右键单击断点
  2. 转到断点属性
  3. 启用条件
  4. 输入你的条件

然后运行你的应用程序,一旦你的调试器到达你的断点

  1. 转到显示视图
  2. 输入您要测试的任何代码
  3. 执行该语句
于 2012-11-21T01:48:02.350 回答
0

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

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

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

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

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

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

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

    “位置==0”

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

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

  • Android 开发者的猴子
  • Android 开发者的 MonkeyRunner
  • RoboGuice
  • 机器人馆
  • 机器人电动
  • JUnit(不是真的可行,因为你无法测试与 android 框架交互的东西,除非你将它与 RobotElectric 结合使用)
于 2012-11-21T23:25:38.117 回答