【问题标题】:How to stop execution when a return statement is encountered in Visual Studio?在 Visual Studio 中遇到 return 语句时如何停止执行?
【发布时间】:2020-12-12 12:38:16
【问题描述】:

我有一个带有多个返回语句的函数。当即将在此函数中执行 return 语句时,我想停止执行我的程序(在调试期间)。

一种方法是在所有返回语句中添加断点,但还有其他方法吗?

【问题讨论】:

  • 还有这样的:https://docs.microsoft.com/en-us/windows/win32/api/debugapi/nf-debugapi-debugbreak 可能搜索替换return 为DebugBreak(); return
  • 尝试在函数末尾的右大括号上设置断点。这仅适用于调试版本。
  • 函数退出前。
  • 如果你在 1 个函数中有这么多的 return 语句,以至于给它们设置断点是一件苦差事,那么也许是时候重构你的函数了。
  • @pasha:这里要传达的信息是,微软要为 Visual Studio 添加这样一个功能需要做很多工作,但由于几乎没有用户,这将是一个相当无价值的功能将需要该功能。几乎没有人有这么多的回报。主要的例外是在生成的代码中,然后您将在生成器中处理它,而不是在调试器中。

标签: c++ visual-studio debugging


【解决方案1】:

在汇编程序中可能会生成一个返回值。如果你打开汇编窗口并找到函数出口,你应该可以在那里设置一个断点。

【讨论】:

  • 但是它会让我知道,在多个 return 语句中,哪一个被执行了?
  • 调试器没那么聪明
【解决方案2】:

你可以做的最接近于任何返回的中断是从函数中的现有断点跳出 (shift+f11)。这不会让您检查返回表达式的参数,但它会让您检查实际返回给调用函数的值。如果您需要中断正在运行的程序,那么您需要添加断点(使用 IDE 或调用 DebugBreak()(或 _CrtDbgBreak(),如果您希望它们从发布版本中消失)。

【讨论】:

  • 我真的希望这些不是我唯一的选择。
猜你喜欢
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 2014-09-17
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多