$cat main.c
#include
by chzht001 - C/C++ - 2007-10-15 14:42:41 阅读(1433) 回复(1)
main() { a(); b(); } b() { c(); } 如果在调用c()时捕获了一个对内存访问的无效信号,是不是就是在把b()的活动记录压进栈时出的毛病呀?对于这种情况有什么好的调试经验呢?望大虾给点意见.谢谢!
分析了一下arm-linux-gcc的压栈退栈操作,只是好奇而已,请大家说说理解得对不对,哪里还有问题。谢谢 压栈操作: mov ip, sp //把sp的值先保存到ip中 stmfd sp!, {fp, ip, lr, pc} //压栈 sub fp, ip, #4 //更新当前fp的值 stmfd sp!, {fp, ip, lr, pc} 之前堆栈的状态: 地址 0X5F23B790 0X5F23B78C pc <------fp原来的位置 0X5F23B788 ...
gcc 中,调用者保存的局部变量的入栈顺序跟什么有关阿?是顺序?逆序? 《深入理解计算机系统》书上有的例子显示是逆序的,可是gcc编译产生的是顺序的? 我知道函数参数是按逆序入栈的 。
gcc或者说其他的C编译器对其build-in类型(如unsigned int)和自定义的结构的类型检查有什么不一样呢 比如说如下两种定义: [CODE] 1. unsigned int i; 2. struct sTmp { unsigned int i; }; struct sTmp si; [/CODE] 编译器对变量i和si(或者说是si.i)的类型检查有什么不同的地方呢 因为据说第二种方式会有更严格的检查方式,但不明白细节~~
《编程精粹》上指出未定义的宏在使用时会被替换成0 , 请教一下gcc有没有一个编译开关来提示使用了未定义的宏?
下面这段代码会输出max < 5 这个字符串
---------测试代码---------
#include
gcc如何做到只检查语法错,不编译? 我知道你也许会回答: -S 这对一个文件夹好办gcc -S file.c 但对于一个工程来说就麻烦了,即使file.c没有错,用gcc -S file.c也会报很多错和警告 因为对一个工程经常会修改,如果修改大的话,到最后编译可能会我很多错误, 所以想修改一部分就检查一相,但通常一make就是编译,要花很常时间,这样多次修改编译会很耗时间, 怎样做能只检查语法而不编译呢? 用词不是太准确,大家能明白我说的...
我用gcc -o test test.c编译test.c为什么执行test文件时没有任何结果, 而使用gcc -o abc test.c则可以得到正确结果? 是不是指定的文件名不能与源文件相同?
以下gcc包分别都有些什么作用: gcc-3.2.2-5.i386.rpm; gcc-c++3.2.2-5.i386.rpm; gcc-g77-3.2.2-5.i386.rpm; gcc-gnat-3.2.2-5.i386.rpm; gcc-java-3.2.2-5.i386.rpm; gcc-objc-3.2.2-5.i386.rpm. 弄了好久也弄不明白..