我想暂时禁用一个断点,所以我设置了一个条件断点,条件如下:
(global::System.DateTime.Now<new global::System.DateTime(2014,03,28,11,0,0))
Run Code Online (Sandbox Code Playgroud)
当这个断点被击中时,弹出一个对话框,说
The condition for a breakpoint failed to execute. The condition was
'(global::System.DateTime.Now<new
global::System.DateTime(2014,03,28,11,0,0))'. The error returned was
'The runtime has refused to evaluate the expression at this time.'. Click
OK to stop at this breakpoint.
Run Code Online (Sandbox Code Playgroud)
为什么运行时拒绝评估表达式?
如果不修改调试的源代码,我该怎么做才能获得所需的行为?
是否可以在Visual Studio 2010中指定断点,仅在调用堆栈的调用方法满足某些特定条件时才会命中?例如,很可能是方法名称.
我理想地在Visual Studio本身寻找一个解决方案,例如条件断点,但我会决定在代码中测试堆栈中的方法名称并使用编码断点.
我想要实现的是切断来自特定呼叫者的呼叫.
哪个(如果有的话)R IDE(例如StatET,Revolution R,RStudio,ESS,NppToR等)支持条件断点?
这是可通过bp在debug包,或通过调用代码的附加位browser()基于条件.但是,能够切换特定行#并快速输入该特定行的条件断点可能更有效,而无需额外的代码或控制台活动.
注意1.我已经搜索了一些这些,似乎RStudio中没有条件断点,我认为对于StatET也是如此.ESS似乎有支持(参见本页),虽然我还不熟悉ess-tracebug以及它是否易于使用.它似乎也适用于旧版本的ESS; 我还不熟悉更新版本的功能.
更新1.我正在选择一个答案(唯一的答案--Andrie's).问题是关于任何 IDE 是否支持条件断点的问题,并且幸运的是,Andrie已经证明存在解决方案.我仍然对支持这一点的任何其他IDE感兴趣,尽管Eclipse现在已经足够好了.(目前,我更喜欢Rstudio,但这已经在他们的功能请求列表中.)如果任何人都具有ESS的专业知识并且可以展示该功能,我相信它会使在这个问题上发生的其他人受益.
这是我多年来不时尝试过的,而且从未成功过.我只想根据字符串相等性为Visual C++ 2012设置条件断点.我想测试的变量是
string test;
Run Code Online (Sandbox Code Playgroud)
我试过了
test == "foo"
=> The breakpoint cannot be set. no operator "==" matches these operands
test == string("foo")
=> The breakpoint cannot be set. no operator "==" matches these operands
test.compare("foo") == 0
=> The breakpoint cannot be set. This expression has side effects and will not be evaluated.
strcmp(test.c_str(), "foo") == 0
=> The breakpoint cannot be set. This expression has side effects and will not be evaluated.
Run Code Online (Sandbox Code Playgroud) c++ breakpoints string-comparison conditional-breakpoint visual-studio-2012
假设我有一些基类A和两个派生类B和C.类A有一些叫做f()的方法.
有没有办法在visual studio中的A :: f()中设置条件断点,只有当我的'this'实际上是C类的实例时才会被击中?
例如
void A::f()
{
some code and a breakpoint
}
void foo(A* a)
{
a->f();
}
void bar()
{
A a;
B b;
C c;
foo(&a); // breakpoint isn't hit
foo(&b); // breakpoint isn't hit
foo(&c); // breakpoint is hit
}Run Code Online (Sandbox Code Playgroud)
我已经设法通过在断点条件下测试虚拟表指针来实现它,但必须有一个更好(更简单)的方法.
提前致谢.
编辑:修改注释中建议的源代码并不是我正在寻找的解决方案.它必须通过VC++调试器完成.
你如何在Eclipse中设置内存断点?也就是说,我想设置一个条件断点,当给定内存位置的数据发生变化时触发该条件断点.
之前已经提出过这个问题,但唯一提供的答案并没有解决这个问题,而且基本上是可以在Eclipse Online帮助中找到的相同信息.
我正在寻找的是在Eclipse中设置条件断点的更详细的信息(或者一个例子会很好),当特定内存地址的数据发生变化时,它将触发.
我想在gdb断点上设置一个条件,只有在回溯中出现某个函数名时才会中断.最好的方法是什么?
我想调试一个静态内部类,它实际上是一个Callable.每当我尝试在Eclipse中设置条件断点时,我都会收到断点错误:
该类型
com.sun.source.tree.Tree$Kind无法解决.它是从所需的.class文件间接引用的.
导致此错误的原因是什么?它是使用com.sun.source.tree.Tree$Kind但不提供的类/包中的错误吗?我怎么知道它是哪一堂课?我该如何解决?
一个应该正确的示例表达式是: return mRtx.getNode().getNodeKey() == 74;
我已将其更改为mRtx.getNode().getNodeKey() == 74但仍然是相同的错误.最近我发现了这个bug并且简单地使用了:
if (mRtx.getNode().getNodeKey() == 74) {
System.out.println("bla");
}
Run Code Online (Sandbox Code Playgroud)
并在"sysout"语句中设置"正常"断点,以防有人遇到同样的问题.
Visual Studio可以在断点命中时打印调用堆栈,并且可以在满足条件时停止,是否有任何方法可以组合它并在从另一个选定的函数调用函数时停止,并忽略所有其他调用?
我想用lldb设置一个条件断点.这通常使用-c选项完成:
breakpoint set -f myFile.cpp -l 123 -c 'a==3'
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,我想测试一个std::string对象是否等于某个字符串值但是这样做
breakpoint set -f myFile.cpp -l 123 -c 'a=="hello"'
Run Code Online (Sandbox Code Playgroud)
不起作用... Lldb没有抱怨(虽然gdb会返回错误)但它在到达断点时忽略条件字符串并且过早地中断...
这个问题与此类似,但使用lldb而不是gdb.那里提出了解决方案
breakpoint set -f myFile.cpp -l 123 if strcmp(a, "hello")==0
Run Code Online (Sandbox Code Playgroud)
似乎对lldb无效
使用的Lldb版本:3.4