博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCC和GDB
阅读量:7025 次
发布时间:2019-06-28

本文共 1098 字,大约阅读时间需要 3 分钟。

1、GCC

  linux下,gcc 是指gcc c编译器。我们从一个程序到一个可执行文件来说明gcc的几个选项:

  如果你写的代码是hello.c,你的程序将经历下面的步骤到达硬盘或者内存成为可执行文件。

gcc -E main.c -o main.i //第一步:hello.c(文本)经过预编译生成hello.i(文本)

gcc -S main.i -o main.S //第二步:hello.i(文本)经过编译器生成hello.s(汇编。文本)

gcc -c main.c -o main.o //第三步:hello.s(文本)经过汇编器生成hello.o(二进制)。

gcc main.o -o main    //第四步:hello.o(二进制)经过链接器生成hello可执行文件。

一般情况下用gcc main.c -o main 就可以直接生成可执行文件main。

2、gdb(一些基本的调试命令)

需要调试的程序在编译的时候要加 -g 选项,程序才能进行调试

list 显示源文件:

          list 没有参数,显示当前行之后或周围的10多行

          list start,end  显示从行号start到end之间的代码行。

print 查看运行时的数据

    print i    显示当前变量i的值

    print &i   显示变量i的存放地址

    print array@1   显示从array(数组名)开始的5个值

    print array[2]@3  显示从array第二个元素开始的3个数组元素的值

    whatis i       显示变量i的数据类型

设置断点 break

   break linenum    在当前文件指定行linenum处设置断点

    break function   在当前文件函数function的入口处设置断点

显示断点 info  info breakpoints/break/watchpoints  [num]

单步跟踪 step [N]  如果遇到函数调用,并且该函数编译时有调试信息,则会进入该函数内执行。

       next [N]  遇到函数调用时,执行整个函数。

连续执行continue 从当前行开始,连续执行到下一个断点处,或者到达该程序结束。命令中可以给出一个数字N,忽略其后N-1次断点。

运行程序 run。

clear(清除所有已定义的断点),delete(删除所有断点,后面可给出断点号码,多个断点用空格分开)

  最后,补充一句上面的函数都可以用首字母简写

本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1974129,如需转载请自行联系原作者

你可能感兴趣的文章
POJ2774:Long Long Message——题解
查看>>
2018-2019 20165226 网络对抗 Exp1 PC平台逆向破解
查看>>
javascript作用域与预解析
查看>>
unity 代码有调整,重新导出 iOS 最烦的就是 覆盖导出后项目不能打开
查看>>
C# 中的拓展方法,以StringBuilder加上IndexOf方法举例
查看>>
[转载]部署Office Web Apps Server并配置其与SharePoint 2013的集成
查看>>
第41件事 创新设计的4种方法
查看>>
python学习===计算字符串中子串出现的次数。
查看>>
页面在谷歌浏览器和IE浏览器顶部多出空白行,火狐显示正常
查看>>
CSS子元素设置margin-top作用于父容器?
查看>>
VS Code
查看>>
做了6年开发,工资涨不上去,怎么办?
查看>>
微信5.2
查看>>
C++运算符重载笔记
查看>>
Android中数据库和安装包分离
查看>>
Android调用系统功能
查看>>
关于chorme 通知功能
查看>>
9-1迭代器
查看>>
new , delete常见用法和与malloc,free比较
查看>>
读书笔记--精通CSS高级Web标准解决方案(六)---无序列表样式
查看>>