我想用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
有没有办法在Visual Studio中的任何函数上设置断点,有点像bm kernel32!LoadLib*在WinDbg中?
我知道一种方法是在应用程序启动时中断,找到所需的DLL加载地址,然后将偏移量添加到您可以通过Depends获得的所需函数,并在地址上创建断点.但这真的很慢,切换到WinDbg并返回也很烦人.
也许有更好的方法?
我需要设置断点来监视内存中更改的内存中的特定地址(例如0x0483d7cc).我正在使用Visual Studio 2012和C++.我怎样才能做到这一点?
这是一个典型的java maven项目。运行时实例和源代码是完全相同的版本。通过尝试最新的 Eclipse(2020-03 4.15.0) 和 (2018-09 4.9.0),我遇到了相同的错误“无法编译缺少 java 项目上下文的条件断点”。条件非常简单,如下所示:
onestring.equalIgnoreCase("abc") && this.anotherString.equalIgnoreCase("edf")
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了一下,似乎这是一个 Eclipse 错误。这里有人经历过同样的事情吗?或者我做错了什么?
我在错误的行上设置了一个条件断点.我想将它向上移动一行.这甚至可能吗?我知道我总是可以将条件复制粘贴到正确行的新断点,但只需拖放即可.
例:
private void loopOverInternalList(Object findThis) {
int numberFound = 0; //I want conditional breakpoint here.
for(Object listItem : internalList) { // Breakpoint [findThis.getSomeProperty() == true]
// do something...
}
}
Run Code Online (Sandbox Code Playgroud)
在示例中,Eclipse将为internalList中的每个项目中断,而如果它在numberFound定义中中断,则它应该仅中断一次.在我目前的情况下哪个更方便.
使用 IntelliJ IDEA,当设置不经常(或根本不)遇到的断点时,我会离开我的计算机。我将每隔 10 分钟左右返回一次,检查是否已到达断点。如果我能听到到达断点的声音,那就更有效率了。这可能吗?
以下代码有效,但我需要执行一个.mp4文件而不是.app. 请参阅该尝试的第二个代码块,该尝试不起作用。
尽管该代码适用于.app,但我如何设置断点以在到达该代码时执行该代码?
这有效:
try {
Runtime.getRuntime().exec("/usr/bin/open -a iTunes.app");
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这不会:
try {
Runtime.getRuntime().exec("MacintoshHD/Users/myusername/Music/iTunes/iTunes Media/Tones -a 01 Zelda Gets Item Alert Tone.m4a");
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我确实尝试在有空格的路径项周围加上引号。那也没用。
我一直在网上查找如何更改 Visual Studio 2017 中断点的位置,但找不到任何答案。唯一接近的答案来自2009 年,并且在 VS2017 中不再是一个选项。
大多数回答这个问题的尝试都涉及删除和重新创建断点。大多数情况下这很好,但是如果您正在处理跟踪点或条件断点,其中有几个选项应用于“断点”,您真的不想删除并重新创建它。
我什至在UserVoice上看到了将断点拖放到不同行的请求,但没有任何东西告诉我即使没有拖放也无法做到这一点。
是的,我知道很多人说你为什么要搬它?好吧,有时 VS2017 在Get Latest从 TFVC执行 a 后没有得到这一点,代码已移动但断点未随代码移动,我真的不想重新创建条件跟踪点。或者也许我只是想将它移动到一般测试和调试中,并专注于不同的代码。无论哪种方式,原因并不重要 - 问题是如何。
那么如何更改断点的位置而不必删除和重新创建所有选项?
breakpoints conditional-breakpoint visual-studio visual-studio-debugging visual-studio-2017
当我在VS2005中使用条件断点而不是使用临时代码来检查特定条件时,我注意到它需要更多时间并且执行速度会降低!! 你知道为什么吗?以及如何解决这个问题?
〔实施例:
int sequence = atoi(m_SequenceNumber.GetAscii());
if( sequence == 392914)//temporary code to check to step into code
{
int x = 0;//I put breakpoint here
}
Run Code Online (Sandbox Code Playgroud)
之前的代码将比我使用条件断点(sequence == 392914)更快地执行
我的休息条件:
事件instanceof org.geomajas.gwt.client.widget.event.SearchEvent我尝试了其他变体,例如事件instanceof SearchEvent/with parantheses and with/out";"
错误:评估必须包含表达式或格式良好的语句块
解决方案: ?
顺便说一下,我正在使用jdk 1.6.25
我在C#代码上使用Visual Studio 2008.
如果另一个断点被击中(并打破了),我只想在断点处打破.有没有办法做到这一点?
我认为作为子问题,访问调试器具有的信息会很好.
这个的基本原理是我只对给定某个callstack(以及在callstack中执行其中一个函数的某个点)打破某个断点感兴趣.也许我应该使用callstack代替?另一个原因是编程访问调试器知道的东西会很有趣.
谢谢.