Linux c源程序编译(gcc gdb)
如 gcc -o hello hello.c 如果hello.c有问题,编译没通过,那么当前目录是不会有hello这个文件?
2.编译没通过是因为源程序有什么样的错误呢?
3.如果没这个hello文件,那么就不能用gdb调试。请问gdb主要是调试出什么样的错误呢?
望大家帮帮我这个Linux新手!
作者: guixuhui2 发布时间: 2011-03-22
2. 有被编译器能够发现的错误
3. 调试编译器发现不了的错误
作者: yui 发布时间: 2011-03-22
2.错误有可能是语法错误,也有可能是链接错误,一步一步查。
3.gdb一般调试你的程序的逻辑错误。一般与具体应用相关的。
作者: wangtingguang 发布时间: 2011-03-22
2,编译一般包括词法、文法、语意等一系列的检查,每一步有问题就会卡住
3,用gdb调试的时候需要在编译时候加-g选项来帮助调试,一般帮助处理逻辑错误等
作者: thefirstz 发布时间: 2011-03-22
char *p;
p = 0;
*p = 0;
以上几行完全没有语法错误,所以编译的时候不会出错,但是一运行就会挂掉。
gdb就是用来调试类似这种,语法正确但是功能不正确的
作者: bluejays 发布时间: 2011-03-22
int age;
ageee = 234;
这里把变量的名字写错了,属于语法错误,无法通过编译。
改正之后,
int age;
age = 234;
这次可以编译通过,但是如果输出age就会发现某人年龄是234岁,显然不对,原因是234这个值写错了,应该是23。这样的错误gcc是发现不了的。用gdb调试就是为了找出这样的错误。
作者: bluejays 发布时间: 2011-03-22
2.错误有可能是语法错误,也有可能是链接错误,一步一步查。
怎么一步一步查!
用什么工具?还是自己慢慢肉眼查?
作者: guixuhui2 发布时间: 2011-03-22
引用 2 楼 wangtingguang 的回复:
2.错误有可能是语法错误,也有可能是链接错误,一步一步查。
怎么一步一步查!
用什么工具?还是自己慢慢肉眼查?
最简单的方法就是把程序大部分注释掉,编译通过了,将注释的范围缩小。
hoho
作者: wangtingguang 发布时间: 2011-03-22
作者: a274955739 发布时间: 2011-03-22
再举个例子:
int age;
ageee = 234;
这里把变量的名字写错了,属于语法错误,无法通过编译。
如果程序很大,用什么方法能快速的检查出错误出在哪里。换句话说,如何在较大较繁琐的源程序中找到错误出现在ageee这里。
作者: guixuhui2 发布时间: 2011-03-22
2.错误有可能是语法错误,也有可能是链接错误,一步一步查。
如何知道是链接错了还是语法错了。能讲讲什么时候要用到链接吗?有用到库函数是不是都得在命令行
上加上-l选项?
作者: guixuhui2 发布时间: 2011-03-22