gpt4 book ai didi

c - "step"不是在程序结束时结束程序,而是在另外 5 个 "step"之后结束

转载 作者:行者123 更新时间:2023-12-05 01:26:16 25 4
gpt4 key购买 nike

我正在使用 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” not ending program at the end of program

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

这些指令是 C 运行时启动和关闭的一部分。通常你没有兴趣在那里调试,但是C运行时的开发者确实需要调试它,而调试器不知道你是否愿意。

Can you tell me how i can tell gdb to debug only my code.

GDB 不知道哪些代码是您自己的,哪些不是(我不相信有什么方法可以告诉它)。

如果你不想在 main 结束后进行调试,那么不要要求 GDB 这样做:一旦你到达“你的代码”的结尾,使用 continue 而不是 step

关于c - "step"不是在程序结束时结束程序,而是在另外 5 个 "step"之后结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54008015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com