为什么我在调试某些c程序的时候,GDB会跳过一些本来应该执行的语句?
这是源码
void schedule(void)
{
int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;//这里就没有执行
i++;
do
{
i = (i >= NR_TASKS) ? 1 : i;
if (task[i] == NULL) //这里也没有
continue;
if (TASK_RUNNING == task[i]->state)
{
last_task_nr = i;
break;
}
}while (++i != last_task_nr+1);
if (i == last_task_nr+1)
last_task_nr = 0;
switch_to(last_task_nr);
}
这是在gdb中调试的情景
schedule () at schedule.c:31
31 int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;
(gdb)
33 i++;
(gdb)
46 }while (++i != last_task_nr+1);
(gdb)
36 i = (i >= NR_TASKS) ? 1 : i;
(gdb)
38 if (task[i] == NULL)
(gdb)
46 }while (++i != last_task_nr+1);
(gdb) p i 《== 这里也显示不了i的值
$1 = <value optimized out>
(gdb) n
36 i = (i >= NR_TASKS) ? 1 : i;
(gdb)
38 if (task[i] == NULL)
(gdb)
46 }while (++i != last_task_nr+1);
(gdb)
我在网上查,说可能是注释的问题,我把所有的注释都去掉,结果还是这样?究竟该怎么解决啊????
void schedule(void)
{
int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;//这里就没有执行
i++;
do
{
i = (i >= NR_TASKS) ? 1 : i;
if (task[i] == NULL) //这里也没有
continue;
if (TASK_RUNNING == task[i]->state)
{
last_task_nr = i;
break;
}
}while (++i != last_task_nr+1);
if (i == last_task_nr+1)
last_task_nr = 0;
switch_to(last_task_nr);
}
这是在gdb中调试的情景
schedule () at schedule.c:31
31 int i = (last_task_nr == 0) ? last_task_nr = 1 : last_task_nr;
(gdb)
33 i++;
(gdb)
46 }while (++i != last_task_nr+1);
(gdb)
36 i = (i >= NR_TASKS) ? 1 : i;
(gdb)
38 if (task[i] == NULL)
(gdb)
46 }while (++i != last_task_nr+1);
(gdb) p i 《== 这里也显示不了i的值
$1 = <value optimized out>
(gdb) n
36 i = (i >= NR_TASKS) ? 1 : i;
(gdb)
38 if (task[i] == NULL)
(gdb)
46 }while (++i != last_task_nr+1);
(gdb)
我在网上查,说可能是注释的问题,我把所有的注释都去掉,结果还是这样?究竟该怎么解决啊????
...全文
相关推荐
用GDB调试程序(整理有书签).pdf
GDB支持多种编程语言,包括C、C++、Fortran、Objective-C等。其功能主要包括:1. **设置断点**:在程序特定位置暂停执行,以便检查此时的程序状态。
用GDB调试程序.pdf
**多语言支持**:GDB支持多种编程语言,包括C、C++、Objective-C、Ada、Fortran、Pascal、Assembly等。
linux 用GDB调试C和C++程序
`tst`:```bashgcc -g -Wall tst.c -o tst```##### 使用GDB调试程序1.
Gdb调试程序-详解(GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。)
GDB(GNU Debugger)是一个强大的命令行调试工具,主要用于C语言等编程语言的程序调试。
Linux下C程序的GDB调试方法.pdf
### Linux下C程序的GDB调试方法#### 一、GDB简介GDB(GNU Debugger)是由GNU项目开发的一款强大的程序调试工具,主要用于UNIX及其兼容系统中的软件调试。


其它技术问题
