linux下调试程序,除了常规的core-dump,gdb,还有一些技巧,在2014年3月18日学来,指导:温老师。
一、可疑地方输出调试信息;
二、编译程序,但是并不链接;例如指令:/opt/tilera/TileraMDE-4.1.2.149467/tilegx/bin/tile-gcc -Wl,--fatal-warnings -std=gnu99 -Wall -Werror -g -O0 -E c2c_sender.c,这样,程序中的库函数均被替换,库函数内部的错误有可能被定位到;
三、断点设置在exit和_exit,库函数可能在一定的位置调用到退出函数,这样调试时可以定位到底是哪个函数退出;
四、对于程序退出的错误码,要辨别到底是属于Linux系统的错误码,还是第三方库的错误码,这样在定位错误时可以增效;记住Linux的错误码具体存放在哪个头文件;以及第三方库的错误码文件;必要时,在当前目录执行:grep -r ERR__* ./* ,其中 -r 代表在所有当前目录,包括当前目录的子目录;
五、牢记常用的指令及用法,而不是每次都查询,时间的效率可能是几何级的差距;
六、注意观察平时工作中的所见,what are they ? why and how ?