C &引用;“步骤”;不是在节目结束时结束节目,而是在节目结束5秒后结束”;“步骤”;
我正在使用Windows10。我用C写了一个HelloWorld程序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.
#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只调试我的代码吗。