为什么 _mainCRTStartup 在调试打开时如此慢,但在调试关闭时却很快?

发布于 2024-10-26 19:58:18 字数 532 浏览 4 评论 0原文

我在 64 位 Windows 7 上使用 Visual Studio 2010 的 32 位 GLUT。该项目仅包含我的 C++ 实现和头文件。没有 Win32 特定的代码。

我做了很多像素绘制操作。使用发布配置时它是瞬时的,但使用调试配置时速度非常慢(至少需要 5 秒才能绘制)。我注意到当我画得越多时,它的速度就越慢。所以我想,分析它。

Visual C++ 探查器显示 100%(我猜是四舍五入)的时间花费在 _mainCRTStartup 上。我知道这是 C 运行时,但是是什么导致它在调试配置中运行如此缓慢?在调试和发布配置中,等效的 C 代码同样是即时的。 C++ 是否有什么特殊之处导致 _mainCRTStartup 花费更长的时间?

编辑:显然我忽略了一件事:在 _mainCRTStartup 框架下,有一个对未知框架的引用。我假设这是 main() 及其子函数。我无法让它实际分析我编写的函数,无论是在调试还是发布中。这之后我该去哪里?

I'm using 32-bit GLUT on 64-bit Windows 7 with Visual Studio 2010. The project just contains my C++ implementation and header files. No Win32-specific code.

I do a lot of pixel drawing operations. It's instantaneous with the release configuration, but very slow (at least 5 seconds until it draws) with the debug configuration. I noticed it slowed down more when I drew more. So I figured, profile it.

The Visual C++ profiler says 100% (I'm guessing that's rounded up) of the time is spent in _mainCRTStartup. I understand this is the C run time, but what's causing it to run so slowly in the debug configuration? The equivalent C code is equally instantaneous when in both debug and release configurations. Is there anything special with C++ that makes _mainCRTStartup take much longer?

EDIT: Apparently I overlooked one thing: under _mainCRTStartup frame, there is a reference to Unknown frame(s). I assume this is the main() and its children functions. I cannot get it to actually profile the functions I wrote, either in debug or release. Where do I go after this?

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

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

发布评论

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

评论(3

眼藏柔 2024-11-02 19:58:18

调试器可能无法找到您使用的 DLL 的 .pdb 文件。首先要做的是检查您的符号服务器设置。工具+选项、调试、符号。取消选中符号文件位置并重试。

The debugger is probably having trouble finding the .pdb files for the DLLs that you use. First thing to do is to check your symbol server settings. Tools + Options, Debugging, Symbols. Uncheck the Symbol file locations and try again.

清君侧 2024-11-02 19:58:18

_mainCRTStartup 中的“独家 % 样本”是什么?对于此例程来说,包含在内的样本毫无价值。

What the "exclusive % samples" in _mainCRTStartup? Inclusive samples are worthless for this routine.

_mainCRTStartup 是调用 main 的主要函数。所以是的,对于每个程序,100% 的时间都花在该函数内 - 因为它调用所有其他函数。

您正在分析调试模式吗?只是为什么?

_mainCRTStartup is the primary function that calls main. So yes, for every program, 100% of the time is spent inside that function- because it calls all other functions.

You're profiling Debug mode? Just why?

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