进程的完整状态

发布于 2024-08-27 02:21:23 字数 446 浏览 9 评论 0 原文

我编写了一个小程序,如下所示:

#include<stdio.h>
int c=0;
int main()
{
    int a=10,b=20;
    printf("Hello World\n");
    c = a+b;
    printf("%d\n",c);
    return 0;
}

我可以使用命令gcc -save-temps helloworld.c创建a.out文件。 save-temps 标志允许我们保存中间文件 helloworld.i、helloworld.s、helloworld.o

现在我想确切地知道该程序的堆栈在执行过程中如何变化。有人可以告诉我该怎么做吗?

我这个问题的目的是准确地了解任何程序执行期间发生的情况。

I wrote a small program which is as follows:

#include<stdio.h>
int c=0;
int main()
{
    int a=10,b=20;
    printf("Hello World\n");
    c = a+b;
    printf("%d\n",c);
    return 0;
}

I can create a.out file using the command gcc -save-temps helloworld.c. The save-temps flag allows us to save the intermediate files, helloworld.i, helloworld.s, helloworld.o

Now i want to know exactly how the stack of this program changes during the execution. Can some one please tell me how to go about it.

My aim of this question is to know exactly what all happens during the execution of any program.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

疧_╮線 2024-09-03 02:21:23

您可以简单地查看 helloworld.s,它会列出程序中的汇编代码,从中您可以准确地知道堆栈发生了什么,并可以观察变量在何时何地弹出/推送到堆栈上。如果您想观察程序的执行情况,也可以使用 -g 标志编译代码,然后通过 gdb.

You could simply look at helloworld.s, it will have a listing of the assembly code in the program, from this you can tell exactly what happens to stack and can observe where and when variables are popped off/pushed onto it. If you want to observe the program executing, you could compile the code with the -g flag as well, and then run it through gdb.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文