整理了Linux编程快速入门的一些资料,分享给大家。1. 了解编译器
编译xxx.c,产生可执行文件xxx
gcc xxx.c -o xxx如果是C++写的
g++ -g xxx.c -o xxx其中
#-g产生调试信息,用strip xxx #去除调试信息其他选项:
-O 优化(保守级别,保证功能) -O4可能会改变代码行为
-Wall 所有的警告其中象gcc是一个总包工头的角色,实际编译过程是:
(a)预处理: cc -E source.c
(b)编译: cc1
(c)优化optimizer
(d)生成汇编代码
cc -S source.c #生成汇编代码
(e)链接 linker-loader2. 程序出错了,如何用gdb调试gdb xxx
run "arguments"
---
设置断点
break debug_me.c:9
break main例子:
break main
run "hello, world" "goodbye, world"Starting program: /usr/home/choo/work/c-on-unix/debug_me
warning: Unable to find dynamic linker breakpoint function.
warning: GDB will be unable to debug shared library initializers
warning: and track explicitly loaded dynamic code.Breakpoint 1, main (argc=1, argv=0xbffffba4) at debug_me.c:9
9 if (argc < 2) {
(gdb)help break
help breakpoints
---
next 下一步
step 下一步(跟踪到函数里)
---
打”泶锸街
print i
---
where打印调用栈
frame 1 (切换到上一级)
print i
---
挂接(attach)已运行的程序
gdb debug_me 9561
---
调试有core dump的程序
gdb /path/to/program/debug_me core
可以where,frame,print
xxgdb gdb前端或ddd