【Linux】gcc/g++ 调试学习记录

news/2025/2/2 7:59:52/

这是目录

  • gcc编译选项
  • 二、实战
    • 1、编译加上 CFLAGS += -ggdb
      • 三级目录

gcc编译选项

1、-g 编译debug
debugging 选项:-g
gcc -g手册: 点击这里
-g一共分为4个等级:-g、-g0、-g1、-g3
其中g和g0是一个性质,不打开调试信息,g3保留所有信息。
在这里插入图片描述
-ggdb

生成供 GDB 使用的调试信息。这意味着使用最具表现力的可用格​​式(DWARF 2、stabs 或本机 格式,如果这些都不支持),包括 GDB 扩展,如果 完全有可能。

二、实战

记录实际项目中的调试。
使用nano pi跑多线程的时候出现了一段时间出发段错误,使用GDB调试如下:

1、编译加上 CFLAGS += -ggdb

make后执行

gdb ./app

运行一段时间后出现错误,
在这里插入图片描述
使用info threads打印线程相关信息

在这里插入图片描述可以看见,当前处于2号线程。
使用bt打印堆栈信息
在这里插入图片描述一目了然 栈中是从下往上执行的,及再mem_info_fun里面发生了错误。排查发现是没有做错误检查导致的,open返回失败时没有做错误判断,导致段错误。

在这里插入图片描述
修改如下:
在这里插入图片描述

三级目录


http://www.ppmy.cn/news/665975.html

相关文章

flask 框架中对 MySQL 数据库进行增删改查

以下是一个简单的示例代码,可以在 Flask 中使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查: from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemyapp Flask(__name__) app.config[SQLALCHEMY_DATABASE_URI] mys…

什么软件可以测试小米四进水没有声音,小米5手机进水不用怕!牢记4个步骤救活手机...

小米5 进水不用怕!牢记4个步骤救活小米! 其实只要掌握了小米手机进水后,如何用正确的方法进行及时处理,那么小米手机是可以简单救活的,避免因为进水就造成小米手机损坏。 那么如何才是正确的处理方法呢? 步…

手机进水的正确处理方法?

手机进水了怎么办?请不要太慌张。我们把情况分为3种:一、 在通电的情况下掉进清水;二、 在断电的情况下掉进没有腐蚀性的液体;三、 在通电的时候掉进非清水,或不管是否通电掉入腐蚀性液体或粘稠的液体或其它部清洁的液…

typescript学习笔记-面相对象

集成ts到webpack中 使用ts-loader 配置babel-loader ts编辑器只能转换语法,没办法转换新增的语法,所以需要babel来做js的兼容性处理 {test: /\.(js|jsx|ts|tsx)$/i,use:["cache-loader",{loader: "babel-loader",options: {"…

联想yoga pro 13 使用Hyper-v蓝屏错误PAGE_FAULT_IN_NONPAGED-AREA的解决办法

问题发生的原因: 最近准备学习一下Android的开发,机器升级windows10后准备使用自带Hyper-v做虚拟机。 以前一直使用VMWare,但是微软的VS2015中wp开发的模拟器默认使用hyper-v,而VMware 又和Hyper-v不能兼容。没办法只好试着在Hype…

联想小新pro13安装系统,无法按f2键进入bios界面的解决方案

目录 问题描述工具解决方案进入bios设置页面设置secure boot模式设置boot首选项使用bios setup进入系统安装引导 问题描述 在联想小新pro13安装双系统,在开机,按下f2(或fnf2)或者其他的快捷键,电脑进入死机状态 工具 …

可视化对讲广播电话可以用在哪里

可视化对讲广播电话可以用在哪里 可视化对讲广播电话:无处不在的沟通利器 【工地现场】 在矗立的高楼上,工地上忙碌的工人们使用着可视化对讲广播电话。借助高清画面和清晰音频,工作人员可以实时观察工地情况,更好地协调工作&a…