當前位置:編程學習大全網 - 網站源碼 - 為什麽GDB有時候會跳過本來應該執行的語句?怎麽解決這個問題啊?

為什麽GDB有時候會跳過本來應該執行的語句?怎麽解決這個問題啊?

這個該執行的都執行了,有些地方妳估計沒弄明白。

schedule () at schedule.c:31

31 int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;

->這個就執行了妳打印的那壹句。

38 if (task[i] == NULL)

->這個就執行了妳打印的另外壹句。

因為沒有全部程序,不清楚 task、last_task_nr 究竟怎麽回事。

修改:

i的問題:

volatile int i = xxxxxxxx;

如果還有問題:妳可以:

例如 volatile int * volatile task;

出問題的都加上。

不懂的自己看書吧,基本的東西,我就不講課了。

其他:

int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;//這裏就沒有執行

i++;

-> 下面這個更好理解,也更快(不考慮更多優化),考慮優化就變成了下面的);

int i;

if (!last_task_nr) {

last_task_nr=1;

}

i=last_task_nr+1;

-------------------------------------------------

++i 很可能和last_task_nr+1有固定的的等於或者不等於的關系,所以根本就不需要i,但是程序不完整不能確定。

  • 上一篇:文小攀源代碼
  • 下一篇:哪些軟件可以打開和編輯*。PSD(即模板網頁文件)?
  • copyright 2024編程學習大全網