在调试器外部运行时发布生成更改行为

Release build changes behavior when run outside of the debugger

本文关键字:布生成 调试器 外部 运行时      更新时间:2023-10-16

我正在用C++和Lua做一个程序。当我在调试器之外以发布模式运行程序时,程序的行为不符合预期(它不会崩溃,只是没有按照我认为的那样运行)。当我从调试器启动它时,它的行为很好。

我知道程序在调试器中运行的方式与在

调试器外部运行的方式存在差异(堆差异?一些未初始化的变量?是否可以配置调试器,使其以尽可能少的更改运行程序的发布版本,以便我可以尝试在调试时解决此问题?

这里有

几件事可以尝试:

  • 在调试器外部运行,但随后附加到进程。 当进程从调试器启动时,它将具有略有不同的环境,因此如果这是导致不同行为的原因,那么这将允许您调试它
  • 创建关闭优化的发布版本,并查看是否在调试器内部和外部运行相同的行为。如果您仍然可以重现该问题,那么这将使调试它(通过使用上述附加进程方法)变得更加容易

不确定是否使调试器像发布版本一样运行,但您可以稍微模拟它们。

取决于行为差异究竟是什么。

是否初始化了所有变量? 调试器会这样做。 您还可以使用 asm { int 3 } 在发布模式下中断。