我正在调试一个执行很多方法调用的应用程序。
例如,我想调试methodA。它被称为1000次。
但是,在主循环中,我只想在几条
语句后开始调试方法A。
public void methodA()
{
//does something nasty that I want to debug
}
public static void main( String[] args )
{
for (int i=0; i<1000; i++)
{
methodA();
}
methodB();
methodA();
}
我想methodA 在 methodB被调用后才开始闯入。我
真的不想更改我的代码(例如,插入一个boolean值
并使断点以此为条件boolean)。
在Eclipse中是否可能发生这种情况?还是有更好的选择?
A)只需将点击数设为1000。
仅当for循环内的methodA不在某种条件下时,它才有效。
B)使用条件
将断点放在methodA内的第一条语句上。
[这里methodA ==测试,我在第14行放置了断点]
在此处输入图片说明
右键单击断点并选择Breakpoint properties选项,然后
添加以下条件。
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
return (e.getLineNumber() == 9);
这里的9表示第二次调用methodA(或test)的行号,
在代码中找到相同的行并进行更改。
检查javadoc中的
StackTraceElement
,也可以使用方法名称代替行号。也就是说,
只有在从函数调用时,您才能中断它xyz。
在此处输入图片说明
C)等待日食氧气(4.7)
在eclipse的下一版本中,JDT将在断点上提供触发点。因此
,仅当断点x之前被命中时,您才能说命中断点y。
这样,您只能在给定方法流
[stacktrace]上的断点处暂停。
例如:仅当呼叫流为以下情况时,才能在断点处停止:
methodA() –> methodB() –> methodC() –> methodD() 不开
methodA() –> methodC() –> methodD() 等等
有关更多 详细信息,请参见此错误
。将您的评论/建议添加到此错误中。
#include <stdio.h> int main(void) { int i = 0; int sum = 0; for (i = 1; i <= 200; i++) { sum += i; } printf("%d\n", sum); return
问题内容: 所以几周前,我的Eclipse IDE不再允许我远程调试我的应用程序,说它由于未显示行号而无法安装断点…问题是我的Eclipse设置为显示行号(我在日常开发中经常使用) 我进行了一些研究,发现它有时与使用ant来构建项目以及javac中的调试设置有关。我确保在我的build.xml目标中设置了调试功能,但仍然无法让我调试相同的错误。 现在,为了加重伤害,我单击了“不再显示此消息”框
问题内容: 使用VS开发C ++时,您具有数据断点的这一惊人功能,当内存中某个地址的数据发生更改时,就会触发该断点。 在Eclipse中开发Java时有类似的功能吗? 谢谢! 编辑:关于“值更改时挂起”功能:我的印象是执行必须仍然到达断点所在的行。问题是我希望它在值更改时立即触发任何地方。 问题答案: 您可以在字段上设置观察点:将光标放在声明该字段的行上,然后选择菜单, 或者只需双击该行的左边距来
断点会暂停应用程序的运行,线程被挂起. 然后我们可以通过调试器一行一行的查看代码. 断点的状态分为已启用断点和已禁用断点. 已启用的断点在调试状态下,应用程序每次执行到该断点时都会暂停.[图片]已禁用的断点在调试状态下,不会对应用程序的执行造成任何影响. Android Studio中的断点分为很多类型, 每一种断点都有它适用的场合和特殊的作用,了解这些断点,才有可能更好的使用断点. 行断点 行断
本章介绍断点的概念以及如何在程序中设置断点。 断点在调试时在特定代码行执行程序时引入显式停止或暂停。 在执行程序中获取有关程序中变量的知识非常有用。 语法 (Syntax) 以下命令在特定行号处设置断点: > stop at <class name>:<Line no> 以下命令在特定方法或特定变量上设置断点: > stop in <class name>:< Method name | Var
2. 断点 看以下程序: 例 10.2. 断点调试实例 #include <stdio.h> int main(void) { int sum = 0, i = 0; char input[5]; while (1) { scanf("%s", input); for (i = 0; input[i] != '\0'; i++) sum = sum*10 + input[i