【问题标题】:getting the debugger to break at the next click event让调试器在下一次点击事件中中断
【发布时间】:2020-08-04 19:39:00
【问题描述】:

在一个有 100 多个表单的 .net windows 表单项目中,所有这些表单都包含无数包含基类的自定义控件,我很难知道特定按钮在哪里,我的意思是表单名称是什么我在运行应用程序时正在查看,在代码中,我刚刚单击的按钮的按钮单击事件到底在哪里。 Visual Studio 中是否有调试功能,它只会将我的执行中断到发生单击的行。我可以告诉 VS 在下一个 Click 事件发生时中断吗? (这些天在运行 Visual Studio 2012/13)。

谢谢。

【问题讨论】:

  • 这取决于您的 Visual-Studio 版本。你要找什么“条件断点”。

标签: c# visual-studio-2012 visual-studio-debugging


【解决方案1】:

在您单击程序中的按钮之前,请执行以下操作:

转到 Visual Studio 并暂停程序。只需按下暂停按钮。 然后按 F11(步入)。

现在按下程序中的按钮,您应该会进入事件处理程序。

【讨论】:

  • 所以这是一个非常有趣的解决方案,我以前做过几次。您只需要小心,以防您的表单在鼠标移动/悬停事件后面有代码,在您按下暂停按钮并意外将鼠标移到该特定区域后,该代码将在您按下 f10/11 后立即中断。在我的情况下,表单在 Application.Run() 语句处暂停,然后我按 F10,然后我回到正在运行的表单上,现在我小心地将鼠标移动到有问题的 Button 并单击它,然后我掉线了我想去的地方。永远不应忘记此提示/功能。谢谢。
  • 只是出于好奇(我对 Visual Studio 的内部了解不多):为什么您必须在点击按钮之前进入?
  • 仅当您在选项 | 中选中“仅启用我的代码”时才有效调试 |一般。
  • 在 VS2022 中不起作用,可能是因为 Hot Reload。当代码暂停时,PowerPoint 被冻结
【解决方案2】:

对于 web 项目,Jakob Olsen 建议的技术不会真正起作用,因为在调用之间没有活动线程,因此在下一个操作时没有线程可以恢复。但是对我有用的是:

  • 找到一些你知道的代码(你的应用程序中的任何代码)确定它会被执行并设置一个断点
  • 触发此断点,使用 SHIFT-F11 逐步退出,直到退出所有方法
  • 现在执行你不知道执行什么代码的动作,它会中断

【讨论】:

    【解决方案3】:

    我可以建议部分解决方案。

    如果您的点击事件命名为“Button_Click”,请在调试时打开断点窗口并创建新断点。

    单击确定,您将看到功能列表。检查它们并单击确定。在您选择的每个函数上都将创建一个断点。

    【讨论】:

      猜你喜欢
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2023-04-05
      • 2016-11-05
      相关资源
      最近更新 更多