VisualStudio C++如何使 debuginfo 在发布模式下可靠

发布于 2024-08-15 02:31:19 字数 141 浏览 6 评论 0原文

我有一个小问题。我的应用程序在调试模式下运行没有问题,但在发布模式下崩溃。我无法找出问题所在,因为在发布模式下,所有调试信息似乎都是无意义的。然而,有时在其他项目中,调试输出在发布模式下也有效。我必须更改哪些项目设置才能使调试输出在发布中有效?

谢谢!

I've got a little problem. my application runs without problems in Debug mode, but crashes in release mode. I can't track down the problem, because in release mode all the Debuginfo appears to be nonsense. However - sometimes in other projects the Debug output is also valid in release mode. What projectsettings do I have to change such that the Debug output is valid in release?

thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

左耳近心 2024-08-22 02:31:19

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

对此没什么可做的,您始终可以使用 #pragma optimize ("", off) / #pragma optimize ("", on) 围绕它,但这本质上意味着您再次在调试模式下运行,崩溃可能会消失...

如果您习惯阅读汇编代码,您可以切换到反汇编模式并通过很少有调查可以找到变量的正确值。

Even in Release mode "Generate Debug Info" should be set to "Yes" per default. The problem is that when you're running in Release Mode the compiler optimizes the code which makes it hard for the debugger to display the correct values of variables (it may for instance choose to keep some variables in registers etc.).

There's not much to be done about this, you could always turn off optimization either globally or around a specific function using #pragma optimize ("", off) / #pragma optimize ("", on) around it but this essentially means you're running in Debug Mode again and the crash will probably go away...

If you're comfortable with reading assembly code, you can switch over to disassembly mode and through a little investigation find the correct values of your variables.

一指流沙 2024-08-22 02:31:19

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

在您的项目设置中,设置

Configuration Properties > C/C++>一般>调试信息格式

程序数据库

然后,设置

Configuration Properties >链接器>调试>生成调试信息

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

Likely, you're making use of uninitialized variables.

In your project settings, set

Configuration Properties > C/C++ > General > Debug Information Format

to Program Database

Then, set

Configuration Properties > Linker > Debugging > Generate Debug Info

to Yes

The good old "debugging with traces" approach may help you having a rough idea of where the problem is. Then read this portion of the code again and chase uninitialized variables.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文