【问题标题】:Allow inlining in specific headers in debug mode Visual Studio允许在调试模式 Visual Studio 中内联特定标头
【发布时间】:2017-09-06 11:15:26
【问题描述】:

是否可以有一个允许特定标头的构建设置 在调试版本中内联?我正在使用我在一个单独的项目中测试的信号/委托模式。我希望我的主项目在遇到断点时不要在调用堆栈中显示回调的信号/委托部分。是否可以在不优化主项目的情况下允许在仅标头库上内联函数,或者是否有其他方法可以从调用堆栈接口过滤对仅标头库的调用。

【问题讨论】:

  • 没有调用堆栈信息的断点真的一文不值。调试器如何知道你真正在哪个内联函数中?如果不是真的“调用”内联函数,你怎么能在它本身中设置一个断点呢?您想通过删除调用堆栈信息来解决的实际问题是什么?你为什么要这么做?
  • 我不想进入库函数,回调结构会变得相当复杂,我希望它们在调用堆栈中不可见。我想假设回调有效,因为我单独对库进行了单元测试。
  • 所以你的意思是你想跳过某些函数调用?那你为什么不这样做呢?所有调试器都应具有step intostep over 功能。我知道 Visual Studio 调试器拥有它。
  • @Someprogrammerdude 我认为 OP 想要从它传递到库的地方进入回调,跳过库的内容。例如。 Library::SomeHOF([](){ /*want to step to here*/ }) 上的断点,
  • @Someprogrammerdude 确实如此。或者类似 VS 的运行到光标 (Ctrl F10)

标签: c++ visual-studio inlining


【解决方案1】:

你可以试试#pragma optimize

#pragma optimize( "g", {on | off} )

这项工作是按功能进行的。

https://msdn.microsoft.com/en-us/en-en/library/chh3fb0k.aspx

您可能需要在调试模式下激活内联,默认选择退出并选择加入特定功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多