我正在用C++和Lua編寫程序。當我在調試器的發佈模式OUTSIDE下運行程序時,程序的行爲並不像預期的那樣(它不會崩潰,它只是不會做我認爲的)。當我從調試器啓動它時,它表現得很好。在調試器外運行時發佈編譯更改行爲
我知道程序在調試器中運行的方式與在一個之外運行的方式有差異(堆差異?一些未初始化的變量?)。是否可以配置調試器,以便儘可能少地更改我的程序的發佈版本,以便在調試時嘗試解決此問題?
我正在用C++和Lua編寫程序。當我在調試器的發佈模式OUTSIDE下運行程序時,程序的行爲並不像預期的那樣(它不會崩潰,它只是不會做我認爲的)。當我從調試器啓動它時,它表現得很好。在調試器外運行時發佈編譯更改行爲
我知道程序在調試器中運行的方式與在一個之外運行的方式有差異(堆差異?一些未初始化的變量?)。是否可以配置調試器,以便儘可能少地更改我的程序的發佈版本,以便在調試時嘗試解決此問題?
這裏有幾件事情嘗試:在調試器外部
謝謝 - 在程序運行之後附加到程序中,允許我調試此問題。我不需要嘗試第二個建議,但它也是一個非常好的建議! – Raptormeat
出於興趣,問題是什麼?我很想知道在調試器外部運行時環境與調試堆不同(除了調試堆之外)。 –
這是一個未初始化的變量!最後的簡單問題。成員布爾值(對於從堆中創建的類)我以某種方式從未初始化過,始終在調試器中運行時開始爲true,並最終在調試器外部爲false。 – Raptormeat
不確定如何使調試器像發佈版本一樣行事,但您可以在某種程度上模擬它們。
取決於行爲的差異究竟是什麼。
是否所有變量都已初始化?調試器這樣做。您還可以使用asm {int 3}打破發布模式。
這聽起來像你可能有一些代碼,產生未定義的行爲。但很難說沒有看到代碼。你可以發佈麻煩的代碼嗎? –
不是。我不知道問題到底是什麼。我的程序中有幾個實體沒有顯示,但我尚未縮小原因。 – Raptormeat
您確定您在調試器內部和外部運行完全相同的內部版本嗎? – lezebulon