Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio VisualStudio C++;如何使debuginfo在releasemode下可靠_Visual Studio_Debugging_Visual C++_Release - Fatal编程技术网

Visual studio VisualStudio C++;如何使debuginfo在releasemode下可靠

Visual studio VisualStudio C++;如何使debuginfo在releasemode下可靠,visual-studio,debugging,visual-c++,release,Visual Studio,Debugging,Visual C++,Release,我有个小问题。我的应用程序在调试模式下运行没有问题,但在发布模式下崩溃。我无法追踪这个问题,因为在发布模式下,所有的Debuginfo看起来都是胡说八道。然而,有时在其他项目中,调试输出在发布模式下也是有效的。我必须更改哪些项目设置,以使调试输出在版本中有效 谢谢 很可能,您正在使用未初始化的变量 在项目设置中,设置 配置属性>C/C++>常规>调试信息格式 到程序数据库 然后,设定 配置属性>链接器>调试>生成调试信息 至Yes 旧的“跟踪调试”方法可以帮助您大致了解问题所在。然后再次阅读这部

我有个小问题。我的应用程序在调试模式下运行没有问题,但在发布模式下崩溃。我无法追踪这个问题,因为在发布模式下,所有的Debuginfo看起来都是胡说八道。然而,有时在其他项目中,调试输出在发布模式下也是有效的。我必须更改哪些项目设置,以使调试输出在版本中有效


谢谢

很可能,您正在使用未初始化的变量

在项目设置中,设置

配置属性>C/C++>常规>调试信息格式

程序数据库

然后,设定

配置属性>链接器>调试>生成调试信息

Yes

旧的“跟踪调试”方法可以帮助您大致了解问题所在。然后再次阅读这部分代码并追踪未初始化的变量。

即使在发布模式下,根据默认设置,“生成调试信息”也应设置为“是”。问题是,当您在发布模式下运行时,编译器会优化代码,这使得调试器很难显示正确的变量值(例如,它可能会选择将一些变量保留在寄存器中等)


关于这一点没有什么需要做的,您可以始终使用
#pragma optimize(“,off)
/
#pragma optimize(“,on)
在全局或特定函数周围关闭优化,但这本质上意味着您再次在调试模式下运行,崩溃可能会消失


如果您对阅读汇编代码感到满意,您可以切换到反汇编模式,并通过一点调查找到正确的变量值。

您好,谢谢!这些设置已经设置好了。我还设置了/ASSEMBLYDEBUG-但调试输出仍然无效,无法重建项目以确保pdb同步?我当然设置了-但仍然相同。我可以跟踪传递的函数属性,但对于所有局部变量,我得到的CXX017符号“variablename”不是found@Mat这是因为在发布模式下,VC选择将其保存在一个寄存器中,请参阅我的答案。好吧,这里的一切都是正确的。然而,我不认为关闭优化功能有助于解决崩溃的真正原因?@Gregory不,你是对的,它可能不会帮助你找到崩溃。这只是一个如何使显示的变量可靠的示例,但正如我所写,崩溃可能会消失。崩溃可能会消失,而不是它的原因:)