有没有办法在调试中“此时”设置断点?它是关于任何编程语言或 IDE

Posted

技术标签:

【中文标题】有没有办法在调试中“此时”设置断点?它是关于任何编程语言或 IDE【英文标题】:Is there a way to set a breakpoint "at this very moment" in debug? It's about any programming language or IDE 【发布时间】:2015-12-11 08:55:56 【问题描述】:

我经常通过设置断点来调试代码。这就是代码暂停的地方。但是,如果我已经在 Unity3d 中运行了其他人编写的游戏怎么办?然后我不能轻易决定在哪里放置断点,但我需要知道程序在哪里。 关于调试的高级学习,您还有什么建议?

【问题讨论】:

如果你是从源代码运行,你可以试试“暂停”按钮。 大多数调试器支持立即停止被调试者的执行,这可能是您正在寻找的。例如,在 GDB 或 LLDB 中按 Ctrl+C 将中断进程(取决于安装的信号处理程序) ^^ 大多数调试器允许这样的“暂停”或“中断/恢复”。 我记得在labview中你可以随时暂停程序的执行来检查它的当前状态 感谢您的信息!您能否命名实际上具有这种“暂停”能力的 IDE?也许链接到描述? 【参考方案1】:

如果您的 IDE 有一种暂停或中断调试器的方式,那么您最终会到达当前正在执行代码的某个位置(在多核环境中可能同时有多个),而所有其他位置也将停止。您现在可以将断点放置在您想要的任何位置,或者只是继续运行,然后再次暂停/中断。

当您处于这种暂停状态时,您可以查看所有其他线程及其调用堆栈以了解它们当前正在做什么,也可以切换到它们以获取它们的状态。

事实上,在 1 分钟内闯入调试器 10 次有点像穷人分析器 - 你会很容易看到应用程序的某些部分是否过于频繁地执行。

【讨论】:

谢谢!你知道任何可以暂停的 IDE 吗? 在 Windows 上,我使用的是 Visual Studio,它可以暂停。如果你通过 WinDbg 调试你的应用程序,你也可以暂停执行。【参考方案2】:

如果这是 Windows,调试器(和培训师)可以附加到进程。附加后,根据调试器的不同,它可能会立即暂停进程,或者在下次进入挂起模式(例如等待某事)时暂停进程。

在使用 Visual Studio 调试多处理程序时,我不得不这样做。调试器从一个进程开始,必须附加到另一个进程才能切换到调试另一个进程。

【讨论】:

谢谢!那么Visual Studio可以吗?也许还有其他 IDE? 当我将 VS (Visual Studio) 用于多进程程序时,它的附加和暂停功能似乎仅限于仅在线程进入睡眠状态等待类似事件时才暂停。您最好在某个游戏论坛上询问这个问题,也许与您感兴趣的游戏有关。

以上是关于有没有办法在调试中“此时”设置断点?它是关于任何编程语言或 IDE的主要内容,如果未能解决你的问题,请参考以下文章

idea断点如何找集合中的值

有没有办法在传统的代码调试意义上调试 Velocity 模板?

在T4模板中设置断点

GDB再学习:断点调试之硬断点

GDB再学习:断点调试之硬断点

无法调试 - “断点当前不会被命中。没有为此文档加载任何符号”