Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C &引用;“步骤”;不是在节目结束时结束节目,而是在节目结束5秒后结束”;“步骤”;_C_Gdb - Fatal编程技术网

C &引用;“步骤”;不是在节目结束时结束节目,而是在节目结束5秒后结束”;“步骤”;

C &引用;“步骤”;不是在节目结束时结束节目,而是在节目结束5秒后结束”;“步骤”;,c,gdb,C,Gdb,我正在使用Windows10。我用C写了一个HelloWorld程序 #include <stdio.h> int main() { printf("Hello World\n"); return 0; } 在gdb中,我编写start。我输入了好几次step。在某一点上它会打印出来 (gdb) step 7 } 332 in C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.

我正在使用Windows10。我用C写了一个HelloWorld程序

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}
在gdb中,我编写
start
。我输入了好几次
step
。在某一点上它会打印出来

(gdb) step
7       }
332     in C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c
然后我再次键入
step
。它打印

(gdb) step
__tmainCRTStartup () at C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c:334
334     C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c: No such file or directory.
再过一步,它就会打印出来

(gdb) step
7       }
332     in C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c
之后,每次我编写
步骤
时,它都会打印在上面一行。最后,有时它会打印出来

[Thread 1952.0x1628 exited with code 0]
[Inferior 1 (process 1952) exited normally]
我想知道,我做错了什么导致了这个问题

“步骤”未在程序结束时结束程序

问题在于,您对程序开始和结束位置的概念是完全错误的:您的程序在到达
main
之前执行100秒或1000秒指令,在
main
返回之后执行100秒或1000秒以上指令

这些指令是C运行时启动和关闭的一部分。通常情况下,您对这里的调试不感兴趣,但是C运行时的开发人员确实需要调试它,而调试器不知道您是否想要调试它


你能告诉我如何让gdb只调试我的代码吗

GDB不知道哪些代码是你自己的,哪些不是(我也不相信有办法告诉你)


如果您不想调试超过
main
的末尾,那么不要要求GDB这样做:一旦您达到“您的代码”的末尾,使用
continue
而不是
step

,很可能您没有做错什么,是您的环境导致了这些额外的“步骤”s、 您的
main
被一些人调用,您的调试器正在更精确地进入itOr,在退出上一次调用后返回到它。(仅供参考,您可以只执行
s
而不是
step
)您能告诉我如何让gdb只调试我的代码吗。