当前位置: 技术问答>linux和unix
Linux c源程序编译(gcc gdb)
来源: 互联网 发布时间:2016-11-15
本文导语: 1.如果一个c源程序编译没通过,那么他的可执行文件是不会显示在当前目录下对吗? 如 gcc -o hello hello.c 如果hello.c有问题,编译没通过,那么当前目录是不会有hello这个文件? 2.编译没通过是因为源程序有什么...
1.如果一个c源程序编译没通过,那么他的可执行文件是不会显示在当前目录下对吗?
如 gcc -o hello hello.c 如果hello.c有问题,编译没通过,那么当前目录是不会有hello这个文件?
2.编译没通过是因为源程序有什么样的错误呢?
3.如果没这个hello文件,那么就不能用gdb调试。请问gdb主要是调试出什么样的错误呢?
望大家帮帮我这个Linux新手!
如 gcc -o hello hello.c 如果hello.c有问题,编译没通过,那么当前目录是不会有hello这个文件?
2.编译没通过是因为源程序有什么样的错误呢?
3.如果没这个hello文件,那么就不能用gdb调试。请问gdb主要是调试出什么样的错误呢?
望大家帮帮我这个Linux新手!
|
再举个例子:
int age;
ageee = 234;
这里把变量的名字写错了,属于语法错误,无法通过编译。
改正之后,
int age;
age = 234;
这次可以编译通过,但是如果输出age就会发现某人年龄是234岁,显然不对,原因是234这个值写错了,应该是23。这样的错误gcc是发现不了的。用gdb调试就是为了找出这样的错误。
int age;
ageee = 234;
这里把变量的名字写错了,属于语法错误,无法通过编译。
改正之后,
int age;
age = 234;
这次可以编译通过,但是如果输出age就会发现某人年龄是234岁,显然不对,原因是234这个值写错了,应该是23。这样的错误gcc是发现不了的。用gdb调试就是为了找出这样的错误。
|
1. 不会有可执行程序
2. 有被编译器能够发现的错误
3. 调试编译器发现不了的错误
2. 有被编译器能够发现的错误
3. 调试编译器发现不了的错误
|
1,不会产生,好比hello.c中因为有bug而流产,所以不会产生hello可执行文件
2,编译一般包括词法、文法、语意等一系列的检查,每一步有问题就会卡住
3,用gdb调试的时候需要在编译时候加-g选项来帮助调试,一般帮助处理逻辑错误等
2,编译一般包括词法、文法、语意等一系列的检查,每一步有问题就会卡住
3,用gdb调试的时候需要在编译时候加-g选项来帮助调试,一般帮助处理逻辑错误等
|
建立楼主安装一个codeblocks,这样跟windows下的ide比较相似,比开始就用命令行要容易得多
|
通常程序运行失败时会产生一个core文件
gdb yourprog core
gdb> where
可以看到失败时的堆栈信息,通常能够对应到出错的语句
gdb yourprog core
gdb> where
可以看到失败时的堆栈信息,通常能够对应到出错的语句