gpt4 book ai didi

c++ - 在 Visual Studio C++ 2008 win32 运行时问题中调试与发布构建

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:36 26 4
gpt4 key购买 nike

我有一个使用 win32 用 c++ 编写的简单 udp 监听器,当我在 Debug模式下编译和运行该程序时,它工作得很好,而且我能够清楚地看到我收到的数据包中的信息。当我运行与发布版本相同的代码时,它编译良好并且似乎运行良好,但它不像在发布版本下那样打印出任何数据包信息。我试图镜像构建配置以完全匹配,但它仍在发生。任何建议将不胜感激。

最佳答案

这更可能是未将变量初始化为某个初始值的问题,因此在调试中它们具有某种值,但在发布中,大多数东西都初始化为零 (NULL)。因此,可能会发生一些您没有预料到的情况/分支……例如,如果没有您的源代码,就很难发现问题。

这不止一次让我心痛.. :)

这是假设您不希望看到任何使用像 OutputDebugString() 这样的东西作为 Mehrdad 的东西建议...

此外,请确保您的数据包大小小于 1024 字节,否则您将无法获得它们。当 XP 出来时,我花了一段时间才弄清楚这个问题,我无法弄清楚为什么我的代码在 2000 上工作,但在 XP 上却不行……即使 send (sendto) 会返回成功,但它实际上从未发送过数据包..

无论如何,我在 Win32 上处理过很多 UDP,所以如果你给我一些示例代码,我应该能够提供更多帮助......

但无论如何,请检查您的所有变量是否在发送方和接收方都初始化为某种默认值(这只是一个好习惯),然后重新构建它并重试。此外,在发送之前使用 sizeof() 检查您的数据包大小,如果它大于 1024 字节,请不要打扰......检查接收到的数据包的大小也是一个好主意,如果它不完全是大小你期望的,然后丢弃数据包。这更适用于广播,但仍然适用。

如果有任何帮助,请告诉我,我在 another question 上发布了很多 UDP 代码不久前在这里,该代码有效,您可能需要引用它。

关于c++ - 在 Visual Studio C++ 2008 win32 运行时问题中调试与发布构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com