[英]"step" not ending program at the end of program, but it ending it after 5 more "step"
我使用的是 Windows 10。我用 C 编写了一个 HelloWorld 程序。
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
我用 cmd 用以下命令编译了这个
gcc -g -o HelloWorld HelloWorld.c
在 gdb 中,我写了start
。 我打了好几次step
。 在某些时候它会打印
(gdb) step
7 }
然后我再次输入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.
另一个步骤后,它打印
332 in C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c
之后,每次我写step
时它都会打印在上面的行。 最终它打印出来
[Thread 1952.0x1628 exited with code 0]
[Inferior 1 (process 1952) exited normally]
我想知道,我做错了什么导致了问题。
在程序结束时“step”不结束程序
问题是您对程序开始和结束位置的看法是完全错误的:您的程序在到达main
之前执行了 100 或 1000 条指令,而在main
返回后又执行了 100 或 1000 条指令。
这些指令是 C 运行时启动和关闭的一部分。 通常您对在那里调试不感兴趣,但 C 运行时的开发人员确实需要对其进行调试,而调试器不知道您是否愿意。
你能告诉我如何告诉 gdb 只调试我的代码。
GDB不知道哪些代码是你自己的,哪些不是(我不相信有办法告诉它)。
如果您不想调试超过main
的结尾,则不要要求 GDB 这样做:一旦到达“您的代码”的末尾,请使用continue
而不是step
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.