當我嘗試在GDB中運行我的程序時。主結束後,而不是程序結束,我的程序開始跳回到我的主中間,然後隨機跳躍(不向前)。 假設我的主線有57和161之間的線。當程序結束161時,它開始跳到67線,然後跳到64線,然後61線,然後跳到145,最後跳到161線然後結束程序。程序沒有跳到第一次運行(57-> 58-> 59-> ..-> 67-> 68-> 69-> ..-> 161)就像我描述的那樣,它開始做跳躍。我沒有在我的程序中使用和轉換或貼上標籤。它只是在主結束後開始隨機跳躍,而不是結束程序。爲什麼我的CPP在程序結束後隨機運行
這裏是我的GDB一些輸出:
145 evolve1.RVpotentialSample[0].outputHist((char*)"data/potentialHistS",sampleSize/10);
(gdb) n
67 Action sample1;
(gdb) n
64 velocity_verlet_cell_SBC evolve1(number_of_particles*2,dt,sampleSize);
(gdb) n
61 initial_MC_SBC initial1(number_of_particles,temp,100*number_of_particles);
(gdb) n
145 evolve1.RVpotentialSample[0].outputHist((char*)"data/potentialHistS",sampleSize/10);
(gdb) n
161 }
(gdb) n
我甚至不知道怎麼能這樣呢。 GDB在節目結束時向我展示了一些奇怪的跳躍。感謝您的任何可能的意見。
跳躍總是相同還是隨機?除非它是GDB的一個bug,否則你可能最好不要發佈你認爲應該歸咎於的代碼。 – Michael
您正在調試優化版本嗎?如果是這樣,那麼一種解釋可能是由於正在使用優化,源代碼與實際的可執行文件不匹配。 – PaulMcKenzie
@Michael跳躍實際上並不是隨機的,但它僅僅是意想不到的,它總是以固定順序發生。我的代碼非常混亂,也包括許多課程。在這裏發佈所有的代碼將是相當混亂的。 –