我正在用C++和Lua编写程序。当我在调试器的发布模式OUTSIDE下运行程序时,程序的行为并不像预期的那样(它不会崩溃,它只是不会做我认为的)。当我从调试器启动它时,它表现得很好。在调试器外运行时发布编译更改行为
我知道程序在调试器中运行的方式与在一个之外运行的方式有差异(堆差异?一些未初始化的变量?)。是否可以配置调试器,以便尽可能少地更改我的程序的发布版本,以便在调试时尝试解决此问题?
我正在用C++和Lua编写程序。当我在调试器的发布模式OUTSIDE下运行程序时,程序的行为并不像预期的那样(它不会崩溃,它只是不会做我认为的)。当我从调试器启动它时,它表现得很好。在调试器外运行时发布编译更改行为
我知道程序在调试器中运行的方式与在一个之外运行的方式有差异(堆差异?一些未初始化的变量?)。是否可以配置调试器,以便尽可能少地更改我的程序的发布版本,以便在调试时尝试解决此问题?
这里有几件事情尝试:在调试器外部
谢谢 - 在程序运行之后附加到程序中,允许我调试此问题。我不需要尝试第二个建议,但它也是一个非常好的建议! – Raptormeat
出于兴趣,问题是什么?我很想知道在调试器外部运行时环境与调试堆不同(除了调试堆之外)。 –
这是一个未初始化的变量!最后的简单问题。成员布尔值(对于从堆中创建的类)我以某种方式从未初始化过,始终在调试器中运行时开始为true,并最终在调试器外部为false。 – Raptormeat
不确定如何使调试器像发布版本一样行事,但您可以在某种程度上模拟它们。
取决于行为的差异究竟是什么。
是否所有变量都已初始化?调试器这样做。您还可以使用asm {int 3}打破发布模式。
这听起来像你可能有一些代码,产生未定义的行为。但很难说没有看到代码。你可以发布麻烦的代码吗? –
不是。我不知道问题到底是什么。我的程序中有几个实体没有显示,但我尚未缩小原因。 – Raptormeat
您确定您在调试器内部和外部运行完全相同的内部版本吗? – lezebulon