在Eclipse中使用断点时,我有时会注意到它们有不同的图标/注释(左侧边栏上的标记).有时它只是一个蓝色的球,有时候它上面有一个勾号,有时它会被划掉.所有这些注释意味着什么?
我有一个小项目,当在Eclipse调试器中运行时,似乎总是停在FileInputStream.class第106行,其中文件被打开.没有设置断点,但Eclipse的行为就像我在这里有断点一样.如果我清除所有断点,它仍然会发生.
我在同一个Eclipse工作区中有第二个更大的项目,它没有遇到这个问题.
我刚刚将旧的Linux机器从旧的Linux机器上移开,我在Europa Eclipse中开发了这个问题并将这个问题带到我的新机器上,我继续在Ganymede Eclipse中看到问题.问题在操作系统和Eclipse版本中持续存在,但显然不是跨项目.我不明白!我浏览了这个项目目录中的每个文件,找不到任何可能导致Eclipse在FileInputStream中停止的文件.
更多信息:明显的断点实际上不适用于FileInputStream的第106行; 它似乎是FileNotFoundException的异常断点,从FileInputStream中从该行调用的本机代码抛出.但同样,我似乎根本没有任何断点.是否在其他地方定义了异常断点?
当使用Chrome及其JavaScript调试器时,每次重新加载页面/脚本时,我的断点都会丢失,我必须在弹出窗口中找到脚本文件,找到断点的代码行,单击以添加它等
有没有办法保存这些断点,所以即使在页面刷新后它也会中断(我用过的其他调试器都这样做)?
或者,在我的JavaScript代码中是否有一种干净的方式我可以输入一些内容来告诉chrome开始跟踪(暂停一行)?
我正在寻找.NET中的一种方法(特别是2.0,C#),以便触发调试中断,就像在该点设置断点一样,而不必记住在调试器中设置特定的断点,并且不干扰生产运行时.
我们的代码需要在生产中吞下异常,所以我们不会破坏链接到我们的客户端应用程序,但是我正在尝试将其设置为如果它恰好在调试器中运行时会弹出这样的错误进行分析,否则将被安全地忽略.
我的使用尝试Debug.Assert(false)不太理想,我认为这样做Debug.Fail()会有相同的表现.理论上它应该在生产中没有效果,并且在调试时它确实成功停止,但是根据设计(如我所知)如果你想忽略该错误就没有办法继续执行,就像你可以使用实际的断点一样,就像我们吞下错误的生产一样.它显然也打破了变量状态的评估,因为调试器实际上在本机系统代码中停止而不是在我们的代码中,所以它的调试帮助是有限的.(也许我错过了某些方法来重新审视变量等等.它发生的地方.???)
我希望有类似的东西Debug.Break(),但它似乎不存在(除非可能在.NET的更高版本中?),也没有其他Debug方法似乎适用.
更新:虽然ctacke的答案是我所寻找的最佳匹配,但我还发现了Debug.Assert()的一个技巧 - 在调试器中运行时 - 暂停调试器,转到Debug的代码.断言呼叫挂起(以绿色突出显示,因为它在框架代码中已关闭)并按下Step-Out(shift-F11),然后在断言对话框中点击Ignore.这将使调试器在断言返回时暂停(并且能够继续执行,就像它没有发生一样,因为它被忽略了).可能有其他方法可以做同样的事情(点击重试更直接吗?),但这种方式很直观.
目前我正在开发一款基于第三方代码的Android应用.我开始设置断点来理解代码,很快就遇到了问题.突然间我无法让Android Studio停在断点处.
我尝试在onCreate方法中设置断点,在按钮内OnClickListener- 没有任何效果.现在我发现它唯一可以工作的地方是app模块.由于项目在app模块中只有一个活动类,而其他所有内容都在库模块中提供,实际上我根本无法调试.
我假设AndroidManifest.xml中有一些错误,或者更有可能在build.gradle文件中.当我刚从Eclipse切换到Android Studio时,所有这些gradle对我来说都是新手.
如果我在应用程序运行时将鼠标悬停在库断点上,它会告诉我"在行中找不到可执行代码[...]".我认为这是我的问题的原因,但我不知道如何解决它.
build.gradle中的条目中是否有任何"常见的嫌疑人"可能导致我的问题?
我已经清理了我的项目并使缓存失效但没有成功.我甚至尝试了<activity>在库模块中为内部片段添加条目的建议.
编辑:我正在使用最新版本的Android Studio(从2月18日开始的1.1.0版),它应该具有修复过的类似错误.
app模块中build.gradle的内容:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.MIN_SDK)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
}
signingConfigs {
release {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('xxx')
storePassword 'xxx'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.release
debuggable false
jniDebuggable false
zipAlignEnabled true
}
debug {
minifyEnabled false
debuggable true
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Firebug调试复杂的JavaScript代码.我正在寻找一种方法来停止JavaScript执行,就好像它是一个断断点编程.
例:
instructions ...
degugger.breakpoint(); // the execution stops here as if a breakpoint was
// manually set
other instructions ...
Run Code Online (Sandbox Code Playgroud) 我是eclipse的新手,我无法查看我放置的所有断点.我甚至尝试过Window - > Show View - > Breakpoints,但这也无效.
今天我遇到了一个问题,我需要远程调试一个程序.该程序是从另一个系统启动的,所以我真的没有机会在命令行上与它进行交互.我可以轻松改变它的来源.
我需要做的是让程序正常启动,然后等待我用调试器连接它.我无法想出办法让我开心.我找到了错误,但没有调试器的帮助.
while(true) { }
Run Code Online (Sandbox Code Playgroud)
保持进程活着,然后我可以用调试器"设置下一个语句",但它看起来很尴尬和粗鲁.
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
看起来很奇怪,因为实际上没有一个控制台供我输入.(它也没有用.设置下一个语句然后运行会带你回到ReadLine()等待.)
那么我可以在.NET/CLR/C#程序中插入什么样的代码来说"在这里等到我可以用调试器附加"?
我想在第45行的文件service.cpp上的gdb中设置一个断点,我这样做:
gdb> break service.cpp:45
Run Code Online (Sandbox Code Playgroud)
问题是我的应用程序中有许多service.cpp文件,它没有选择我感兴趣的文件.如何指定正确的service.cpp文件?
我从第三方库中获取了一个类中的NullPointerException.现在我想调试整个事情,我需要知道该类所持有的对象.但在我看来,我无法在第三方的类中设置断点.
有谁知道摆脱困境的方法?当然我使用Eclipse作为我的IDE.
更新:该库是开源的.