博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程相关工具
阅读量:3950 次
发布时间:2019-05-24

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

编译器:gcc/g++

通常我们所写的 C 语言程序,是一种高级语言,这些程序其实 cpu 是无法直接识别的,需要编译器,将我们所写的代码解释成为机器指令之后,才能执行

编译过程:

预处理:展开所有代码
编译:进行语义语法检测,将 C 语言代码解释成为汇编代码
汇编:将汇编代码解释成为二进制机器指令
链接:将当前代码以及函数库还有其他文件代码打包生成可执行程序
函数库:将已经实现的代码打包生成一个文件——库文件(已经编译好的机器指令代码)

调试器:gdb: 调试程序运行过程,查看程序出问题的位置

程序调试的前提:生成一个debug版的程序,程序中添加了调试符号的信息,然而Linux下gcc编译器,默认生成的是release版程序,不包含调试符号信息,无法调试,因此在编译程序的时候,需要增加gcc -g 选项,表示生成debug版程序。

gcc 常见选项:

-E 当前gcc只完成预处理就会退出
-S 当前gcc只完成编译阶段就会退出
-c 当前gcc只完成汇编阶段就会退出
-o 用于指定要生成的目标文件名称
-g 生成debug版本程序

开始调试命令:

run 程序直接开始运行
start 开始逐步调试

调试的流程控制命令:

list: list filename:line 查看指定文件指定行附近的代码
step:下一步,若当前调试位置是一个函数,则会进入函数
next:下一步,直接运行这一行的函数
until:直接运行到指定文件的指定行 until filename:line
continue:从当前位置继续运行

断点相关命令:

break:在指定文件指定行打断点, break filename:line
break function_name 在函数首行打断点
info break 查看断点信息
delete:删除断点
watch:变量监控,当变量内容发生变化则停下来 watch variable_name

其他命令:

查看程序运行信息中的函数调用栈,快速定位程序崩溃位置,栈顶函数就是崩溃位置 backtrace
quit:退出调试
print:打印变量信息

转载地址:http://yhwzi.baihongyu.com/

你可能感兴趣的文章
Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
查看>>
spring注解@Primary与@Qualifier
查看>>
annotation之@Autowired、@Inject、@Resource三者区别
查看>>
idea启动微服务找不到配置文件
查看>>
Java通过反射机制调用某个类的方法
查看>>
字节跳到面试题
查看>>
Linux查看物理CPU个数
查看>>
Linux学习之网络IO,磁盘io
查看>>
ES7.6.2安装
查看>>
查看jar依赖树
查看>>
idea运行gradle项目
查看>>
es安装ltr插件
查看>>
开源ltr-es-7.6.2代码到本地idea打开出现各种错误总结
查看>>
Requests实践详解&& python通过连接开启https的elasticsearch7 服务器
查看>>
ES查询流程源码解析
查看>>
ldaps与ldap over TLS
查看>>
jvm为什么把-Xms和-Xmx的值设置成一样
查看>>
2021-01-21对map进行key或者value排序
查看>>
ConcurrentHashMap 1.7和1.8的区别
查看>>
阻塞锁与自旋锁
查看>>