0
我有我無法解釋的非常奇怪的情況。在代碼:gdb是否立即停止所有線程?
Env = Global.Queue2Ctrl.FIFO(100);//Wait for a msg for 100ms
if (Env == 0) continue; //Timeout
printf("i=%d %x\n",++i, (Env->Msg));
if (!Env->Msg)
BreakP();
....
對於這一問題的目的:其他線程每100毫秒從池中獲取並填充信封結構(包括指針消息)。然後它通過FIFO發送Env指針。 此線程處理Env並將其返回到池。
一旦進入了幾十萬個週期,我就會陷入斷點 - 我明白,如果我有一些錯誤,我正在尋找它。 什麼不能恕我直言,當我看着gdb(沒有步進!)Env-Msg變量它不是零! printf輸出零,我輸入if子句,但gdb顯示「正常」值。 我可以在5-7分鐘內重現一次情況,總是gdb顯示良好的價值? 如果這是賽車狀況,當兩個線程都基於超時時,這可以完全在一個彙編程序命令中嗎?
太棒了! 正是我在找的東西! 我懷疑這一點,但gdb文檔指出所有線程都如此決定性地立即停止,以至於我感到困惑。 非常感謝! Большоеспасибо!!! – leonp