在 Visual Studio (C++) 中设置断点问题
Posted
技术标签:
【中文标题】在 Visual Studio (C++) 中设置断点问题【英文标题】:Issue setting breakpoint in Visual Studio (C++) 【发布时间】:2016-03-30 11:14:06 【问题描述】:我有一个处于发布模式的 Visual Studio 2012 项目。由于某种原因,我无法将其转换为调试模式。
当我在调试并尝试在函数 A 上设置断点时,我无法将其放在那里 - 断点将自身移动到内容完全相同的函数 B(即函数 A 和函数 B 完全相同只是名称不同)。
我明白它一定已经优化了代码,但我使用了一个名为/od
的选项,这意味着它应该抑制代码移动。
如何在函数 A 上设置断点?
【问题讨论】:
您可以将任何无用的代码行放在函数 A 中,例如 int x=5+5;并将断点放在那里。这不是一个解决方案,只是我想到了一些事情 不确定那里实际发生了什么,所以我会保留这个评论:您可以尝试在您希望能够执行的函数之前放置一个#pragma auto_inline(off)
和一个#pragma optimize( "dy", on )
in. 这应该 a) 导致两个函数的不同指令和 b) 保持函数原样而不是(可能)内联它。见msdn.microsoft.com/en-us/library/ah08w5c3.aspx和msdn.microsoft.com/en-us/library/chh3fb0k.aspx
@Humam Helfawi 这就是为我做的......谢谢
【参考方案1】:
您可以尝试禁用优化选项。 - 右键单击项目-> 属性。 - 配置属性 - C/C++ - 优化 - 优化-> 选择禁用(/Od) 这应该避免编译器删除代码。 但是,在发布模式下,您仍然不确定显示的数据是否正确。
【讨论】:
请务必在一般部分检查您是否禁用了整个程序优化,以防万一。以上是关于在 Visual Studio (C++) 中设置断点问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2012 Express 中设置 C++ 调试环境
如何在 Visual Studio (C++) 中设置发布分析
如何在 Visual Studio 2010 的 C++ googletest 项目中设置代码覆盖率
如何在 Visual Studio 2008 或 Visual Studio 2010 中设置 JavaScript 断点