gpt4 book ai didi

C编程gdb报错信息

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:23 25 4
gpt4 key购买 nike

我刚开始使用 gdb,所以我想从使用一个打印“Hello”的简单程序开始

#include<stdio.h>
main(){
printf("Hello!\n");
}

保存为 hello.c,然后输入 gdb。打开后,根据教程,我键入“file hello.c”以便将程序加载到调试器中,但我收到此消息:

This GDB was configured as "x86_64-linux-gnu".
"hello.c": not in executable format: File format not recognized

所以我输入了“gcc -Wall -g hello.c -o hello”并得到了这个消息:

hello.c:3:1: warning: return type defaults to âintâ [-Wreturn-type] hello.c: 
In function âmainâ: hello.c:6:1: warning: control reaches end of non-void function [-Wreturn-type]

然后我用 int main 编辑了 main 并在代码中添加了 return 0 。我又做了一次,没有错误,所以我输入了 gdb ./hello 并且成功了……我是否应该始终将我的主电源设置为 int main 并包含返回 0?

最佳答案

安装打包的(适用于您的系统)gdb调试器和 gcc编译器。在 Debian 和相关(例如 Ubuntu)发行版上,以 root 身份运行(例如使用 sudo ):

 apt-get install gcc gdb build-essential

在 Linux 上,您需要(或想要)编译您的 hello.c包含所有警告和调试信息,即使用

 gcc -Wall -g hello.c -o hello

此时您可能会从 gcc 收到一些错误或警告消息;尝试更正您的源文件 hello.c再次编译。

您应该决定使用 C99标准,然后添加 -std=c99gcc 之后和之前 -Wall

检查

 ls -ls hello.c hello

你的hello已生成可执行文件(并且比源 hello.c 文件更年轻)。

然后启动调试器(通过提供可调试的可执行文件)

 gdb ./hello

然后你会得到一个 (gdb)迅速的。尝试在 main 中放置一个断点使用

 break main

GDB 命令。然后,用 run 运行你的程序, 它应该到达 main 处的断点;此时,输入 help获得有关 GDB 命令的一些帮助。

大多数 GDB 命令都可以用它们的前几个字母缩写。所以你可以输入 b而不是 break .

您绝对应该了解 watch gdb 命令,它在实践中非常有用。


关于main你应该将它定义为 int main (int argc, char**argv)你应该以 return 0; 结尾(或其他一些小的正整数,用于运行时错误情况)。实际上,您应该添加 #include <stdlib.h>作为包含的 header (就像您对 <stdio.h> 所做的那样)并使用 return EXIT_SUCCESS; .另请阅读 exit(3) ;通常阅读您正在使用的每个功能的文档(例如 printf(3) ),并接受您可能首先不理解所有文档的事实。您可能需要安装 manpages-dev打包了解man命令。

关于C编程gdb报错信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611939/

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