标签: breakpoints

在刷新 Firefox 时保留断点

我在 Firefox 中使用调试器设置了一个断点。刷新后,断点消失,网页完全加载。可能是什么问题?我能够成功地在 Chrome 中保留断点。

browser debugging firefox breakpoints

5
推荐指数
0
解决办法
580
查看次数

抛出异常,除非在断点后运行

尝试删除文件时,我遇到了一些奇怪的行为。下面是一个快速代码示例:

if (File.Exists(filePath))
{
    File.Delete(filePath);
}
Run Code Online (Sandbox Code Playgroud)

奇怪的行为是尝试删除文件时抛出 System.IO.IOException:

System.IO.IOException
HResult=0x80070020
Message=进程无法访问文件“C:\ProgramData\Path\To\File.sqlite”,因为该文件正被另一个进程使用。
来源=mscorlib

在我们的应用程序中,我们仅在 using 语句中访问文件,以避免任何持久保留。该文件是一个 sqlite 数据库,没有持久或打开的连接。

这似乎是一个很正常的问题。当向代码添加断点时,奇怪的行为就开始了。例如,如果我们在上面添加 Console.WriteLine 语句,则在该语句上中断,然后继续:

<x> Console.WriteLine("Break");
    if (File.Exists(filePath))
    {
        File.Delete(filePath);
    }
Run Code Online (Sandbox Code Playgroud)

没有抛出异常。

如果我们像这样添加断点:

    Console.WriteLine("Break");
    if (File.Exists(filePath))
    {
<x>     File.Delete(filePath);
    }
Run Code Online (Sandbox Code Playgroud)

或者像这样:

    Console.WriteLine("Break");
<x> if (File.Exists(filePath))
    {
        File.Delete(filePath);
    }
Run Code Online (Sandbox Code Playgroud)

抛出异常。

除了更改断点之外,一切都运行得完全相同。我们可以可靠地重现这种行为。我对这种行为进行了一些研究,但找不到任何适用的内容。我很好奇这种行为是否在任何地方都有记录,或者我是否遗漏了任何明显的东西。

编辑:我忘记添加一些注释,我们可以在多台不同的机器上重现此行为。添加 aThread.Sleep()不会改变行为。

任何见解都将不胜感激!

.net c# debugging breakpoints

5
推荐指数
1
解决办法
140
查看次数

GDB 断点不命中模板函数

我正在尝试通过 GDB 在 C++ 中的模板函数中设置断点,我尝试了三种可能的方法。

  1. break fileName:functionName => 适用于非模板化函数(特定于一个函数)
  2. rbreak 文件名:. => 在给定文件中的所有函数处设置断点,但它似乎不适用于模板函数
  3. Break fileName:lineNumber => 适用于非模板化和模板化函数,但对我来说问题是我每次都必须修改这个行号。

总体目标是使用如下所示的脚本通过 GDB 跟踪完整的代码流,但我的代码也有很多模板函数。下面的示例 GDB 脚本

set logging on
b func2
commands
silent
bt 1
continue
end
b func1
commands
silent
bt 1
set logging off
continue
end
Run Code Online (Sandbox Code Playgroud)
  • 一种选择是使用 rbreak filename:.
  • 运行代码一次,并且
  • 再次运行代码而不退出 GDB。这次它识别了函数和断点工作。

您能否帮忙提出一个正确的解决方案,或者如果我遗漏了什么,请告诉我?任何帮助/建议都将受到高度赞赏,并大大简化我的调试。

预先非常感谢!

c++ templates gdb breakpoints

5
推荐指数
1
解决办法
3971
查看次数

Visual Studio 2019 Python 断点未命中

我在 Visual Studio 2019 中启动了一个新的 Python 3.8 项目。我为该项目创建了一个虚拟环境。我在一行上放置了一个断点并启动了调试器。调试时,调试器没有在断点处停止,断​​点上的工具提示闪烁了以下消息:

当前不会命中断点。文件中的断点被过滤器排除。注意:可能会因为“justMyCode”选项而被排除(默认== true)。尝试在调试配置中设置 "justMyCode": false (例如 launch.json)

我的项目甚至没有 launch.json。我在设置中找到了“仅我的代码”选项,并且它已设置为 false。

知道为什么它不会在断点处停止吗?

python debugging breakpoints visual-studio-2019

5
推荐指数
0
解决办法
1058
查看次数

调试 .NET MAUI android 应用程序时未命中断点

我一直在开发 MAUI android 应用程序,在调试时,断点没有命中,应用程序进入中断状态。但对于 Windows 应用程序来说它效果很好。我认为这是 Visual Studio 2022 中 .NET 6 Android 工具的问题。这个问题有什么解决方案吗?

android breakpoints xamarin maui .net-6.0

5
推荐指数
1
解决办法
2530
查看次数

为什么 Intellij 的调试器会在此 Scala 代码中两次命中断点

对于以下 scala 代码,当我在 if 语句处设置调试点并启用“日志:断点命中消息”时

object App1 {
  def main(args: Array[String]): Unit = {
    iftest()
  }
  def iftest(): Unit = {
    val setA: Set[String] = Set("a", "b", "c");
    var setB: Set[String] = Set("d", "e", "f")
    if(setA.size > setB.size){ //here break point at line 8
      println("bigger")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我在控制台中得到以下输出。问题是为什么这个断点会被击中两次?

Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)
Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)
Run Code Online (Sandbox Code Playgroud)

但对于以下类似的 Java 代码,断点仅被命中一次。

Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)
Breakpoint reached at com.eguller.App1$.iftest(App1.scala:8)
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

Breakpoint reached at com.eguller.JApp.main(JApp.java:8)
Run Code Online (Sandbox Code Playgroud)

这是 Intellij 调试器中的错误,还是 Scala 编程语言的功能?

IntelliJ IDEA …

java debugging scala breakpoints intellij-idea

5
推荐指数
1
解决办法
319
查看次数

Android Studio NDK“hello from C++”项目无法调试(无法设置断点)?

Android Studio是BumbleBee 2021.1.1 Path 2,刚刚新建了一个Native C++项目,Build菜单| 编辑Build Types,点击debug,jni Debuggable选择“true”,运行| 编辑配置,调试器选项卡,选择“Native only”,在native-lib.cpp中,设置断点,然后运行| 调试应用程序,断点不会被命中!

我在两台电脑上测试过,遇到同样的问题。还有什么需要做的吗?

编辑:如果在调试器选项卡中选择“Dual”,Kotlin 中的断点是可以的,参见图 4。但 native-lib.cpp 中的断点仍然没有被击中。科特林中的断点 lldb 服务器已启动

编辑构建类型

编辑配置

断点不会被击中

c++ debugging android breakpoints android-ndk

5
推荐指数
1
解决办法
1914
查看次数

为什么Visual C++没有遇到断点,或者单步执行某个特定的函数?

我有以下内容:

classA::FuncA()
{
 ... code
   FuncB();
 ... code
}

classA::FuncB(const char *pText)
{
    SelectObject(m_hDC, GetStockObject (  SYSTEM_FONT)); 
    wglUseFontBitmaps(m_hDC, 0, 255, 1000); 
    glListBase(1000); 
    glCallLists(static_cast<GLsizei>(strlen(pText)), GL_UNSIGNED_BYTE, pText); 
}
Run Code Online (Sandbox Code Playgroud)

我可以在FuncA的任何地方点击断点.如果我尝试进入FuncB,它会跳过.它将接受FuncB中的断点,但永远不会命中它.我知道它正在执行FuncB,因为我可以在FuncB中放入一个MessagBox()调用并获取消息框.

在远离广泛的VC6使用几年后,我是VS2005的新手.我记得VC6时代的这种情况,如果没有符号信息.但是,在这种情况下,两个函数都在同一个文件中,因此符号信息必须正确.同样在那种情况下,我认为你甚至无法设置断点.

我尝试过所有愚蠢的伏都教,就像重建整个解决方案一样.

我忽略了什么愚蠢的事情?

编辑:添加了FuncB的代码,以回应关于它可能基本上是内联的评论.(这只是来自MSDN的wglUseFontBitmaps的确切示例代码[此处为减号]).我不知道内联是如何妨碍逐步完成每次通话的.

c++ breakpoints visual-studio

4
推荐指数
1
解决办法
4889
查看次数

Eclipse - 在代码中的Point处执行表达式?

是否可以让Eclipse在调试时在代码中的特定点执行任意表达式?

执行/显示功能允许您在调试的上下文中运行任意代码.断点会停止流动.

我喜欢的是类似断点,可以插入类中的特定点,不会挂起应用程序流,而是执行一段代码.

背景是我正在尝试调试一些我无法编​​辑的多线程代码,我想做一些天真System.out.println的事情来看看各种事情何时发生.如果我使用断点,那么事件流将受到干扰.

java eclipse debugging breakpoints

4
推荐指数
1
解决办法
1094
查看次数

在trace32中进行LauterBach调试:是否可以在进入上下文之前为局部变量设置数据断点?

在帮助文档中,可以使用以下命令设置数据访问断点

var.break <variable> /READWRITE
Run Code Online (Sandbox Code Playgroud)

但是,这仅在我们输入该变量的上下文时才有效。

因为我想编写PRACTICE脚本来执行自动调试,所以我想在程序运行之前执行此操作。就像是

....
var.break <foo>::<variable> /READWRITE
GO
WAIT !run()
...
Run Code Online (Sandbox Code Playgroud)

有办法吗?

breakpoints local-variables trace32 lauterbach

4
推荐指数
1
解决办法
5598
查看次数