在调试器外部运行时发布生成更改行为
Release build changes behavior when run outside of the debugger
我正在用C++和Lua做一个程序。当我在调试器之外以发布模式运行程序时,程序的行为不符合预期(它不会崩溃,只是没有按照我认为的那样运行)。当我从调试器启动它时,它的行为很好。
我知道程序在调试器中运行的方式与在调试器外部运行的方式存在差异(堆差异?一些未初始化的变量?是否可以配置调试器,使其以尽可能少的更改运行程序的发布版本,以便我可以尝试在调试时解决此问题?
这里有
几件事可以尝试:
- 在调试器外部运行,但随后附加到进程。 当进程从调试器启动时,它将具有略有不同的环境,因此如果这是导致不同行为的原因,那么这将允许您调试它
- 创建关闭优化的发布版本,并查看是否在调试器内部和外部运行相同的行为。如果您仍然可以重现该问题,那么这将使调试它(通过使用上述附加进程方法)变得更加容易
不确定是否使调试器像发布版本一样运行,但您可以稍微模拟它们。
取决于行为差异究竟是什么。
是否初始化了所有变量? 调试器会这样做。 您还可以使用 asm { int 3 } 在发布模式下中断。
相关文章:
- 正在VS调试器中监视映射条目
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 带有 GDB 调试器的 VS 代码内存视图
- 为什么调试器引发"read access violation. this was nullptr"异常?
- VS2017调试器:没有地址,可能是由于编译器优化
- 当前不会命中断点。没有调试器目标代码类型的可执行代码与此文件关联
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 如何在可视化代码中生成用于 c++ 开发的调试器?
- 为什么我的程序无法在GDB在线编译器/调试器或Visual Studio C++ 2019中运行
- Popen使Qt调试器崩溃
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 在集成终端上运行vscode lldb调试器时,如何获取程序的输出?
- 宏使枚举调试器感知?
- Eclipse-C++-调试器立即终止
- 标识gdb调试器中符号的源文件名
- Visual Studio图形调试器引发读取访问冲突异常
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- Visual Studio调试器失败,但程序在生成时运行良好.
- 在调试器外部运行时发布生成更改行为
- 我可以生成附加到正在运行的调试器的进程吗?