linux问题定位

news2024/9/23 23:26:31

1.CPU工作原理

 

 

 2.Linux内存分配

 

 

 3.栈

1).存储局部变量 函数参数 函数返回值的地方
2).每个线程的栈空间连续且相互独立
3).使用 x /100a $esp 可以看到栈内存中的原始数据

 3.函数调用过程

函数调用过程在栈中如何组织数据的

 4.堆 三级堆管理

想详细了解的 阅读《glibc内存管理ptmalloc源代码分析.pdf》 及heapdump 源码

 5.信息搜集

线程信息 栈空间 所有堆块 全局及局部变量 所有保存在core中的信息通过以上方法都能挖掘出来

5.1 查看内存信息

X /100x address

5.2 查看调用堆栈  X /100a $esp

5.3查看局部变量

Info locals

 

5.4 查看全局变量

P 全局变量名

5.5查看类实例

Info symbol *类实例地址

P *(类名*)类实例地址

 5.6查看STL容器

Plist pmap …

 5.7查看堆内存分配:

 Heapdump –a 

6.问题排查实例

问题排查的过程就是分析整合信息的过程,排查问题的过程就是,综合使用第二章介绍的各种方法收集信息,一步步刨根问底,抽丝剥茧的过程。 需要不断的尝试,假设,验证。是一种高级的脑力劳动,需要较大的耐心和对于原代码结构的熟悉,有时候定位一个深层次的问题需要几个月的时间的反复论证验证。

程序偶现崩溃 ?接下来怎么办?

6.1 观察以下core文件 有什么线索

1) core 大小200M左右 说明不是内存泄露导致的崩溃

2) 进程号 5030,通过进程号可以关联日志

3) 错误类型11 段错误。说明是内存访问异常了

6.2准备环境 使用gdb打开 core 文件

 1) 安装dss7016_tools.tar.gz 工具包 保证 gdb(7.6) heapdump到位

2) 使用  gdb UMTS.exe     ../UMTS_5030-1437863062-11.core  -x .gdbinit       打开core文件,保证能正确解析stl容器

3) 使用 info sharedlibrary 检查库是否加载正确

 6.3确认崩溃的表面原因

1) bt一下 崩溃在CZString::CZString构造函数里

 2) disassemble一下 看看崩溃在哪行

3) info registers 一下 看看寄存器的值

 4)表面原因确认 Mov edx,[eax +0x4] eax 值不对导致断错误

 6.4 Eax 值为什么不对 第一个难点 优化栈的逆向追溯

 

1)参数__x的值不对 why?

参见stl_map.h和stl_tree.h

 2)找到__X的值

 3)现在可以确认 是这个map中的值不对导致的

4)map中的值为什么不对 超级难点 没有例行流程排查

 

 

  

 5) 根本原因找到 CLiveChannel类已经释放 又操作了里面的锁 导致破坏了 thread 1的map结构导致 段错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

研磨设计模式day13组合模式

目录 场景 不用模式实现 代码实现 有何问题 解决方案 代码改造 组合模式优缺点 思考 何时选用 场景 不用模式实现 代码实现 叶子对象 package day14组合模式;/*** 叶子对象*/ public class Leaf {/*** 叶子对象的名字*/private String name "";/**…

KVM虚拟化平台安装及创建虚拟机

文章目录 一、KVM 简介二、安装KVM虚拟化平台1、方式一:安装操作系统时,添加虚拟化功能2、方式二:基于现有系统,安装虚拟化功能3、验证KVM安装是否无误 三、创建虚拟机1、创建虚拟机前环境准备工作2、创建CentOS7.5系统虚拟机 一、…

网工必备知识之——防火墙篇

目录 一、背景 二、类型 2.1.过滤防火墙 2.2.应用网关防火墙 2.3.服务防火墙 2.4.监控防火墙 三、功能 3.1.网络安全屏障 3.2.网络安全策略 3.3.进行监控审计 3.4.防止内部信息的外泄 四、五个安全域 五、三种工作模式 5.1交换模式(二层模式): 5.2路由模式(三层…

恶意软件分析和取证:深入研究各类恶意软件,讨论分析技术和数字取证方法,了解攻击者的行为和动机

章节一:引言 在当今数字化的世界中,恶意软件的威胁不断演化,给个人、企业 ja 尤其是政府带来了巨大的安全风险。恶意软件如病毒、木马、蠕虫等形式多样,攻击手段不断升级,导致了信息泄露、财产损失 ja 甚至国家安全的…

【深度学习】实验02 鸢尾花数据集分析

文章目录 鸢尾花数据集分析决策树K-means 鸢尾花数据集分析 决策树 # 导入机器学习相关库 from sklearn import datasets from sklearn import treeimport matplotlib.pyplot as plt import numpy as np# Iris数据集是常用的分类实验数据集, # 由Fisher, 1936收集…

CFC编程入门_【10分钟学会】

什么是CFC: 【差不多10分钟全学会】 CFC是图形化编程, 跟单片机的连线一样, 唯一的区别:功能块右侧是【只能输出】引脚。 只有左侧引脚可以输入输出。 有哪些控件: 指针:用于拖动功能块。 控制点&#xf…

C#将text文本中的单双行分开单独保存

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 文本的分割1.设定text文件的名称为02.文本导出 文本的分割 1.设定text文件的名称为0 代码如下: using System; using System.Collections.Generic; us…

【Seata】01 - Seata XA 模式 Demo 调用流程分析

文章目录 前言参考目录版本说明前置知识1、关于事务的理论知识2、关于 Seata3、Seata 领域模型 测试 Demo1、模块说明2、调用逻辑说明3、分析流程说明4、注意事项 Seata XA 模式 Commit 调用流程分析1、调用流程图2、XA 模式流程以及操作命令3、业务模块:流程入口3.…

掌握Six Sigma:逐步解锁业务流程优化的秘密之匙

一、Six Sigma方法简介 1. Six Sigma的起源和概念 Six Sigma起源于1980年代的摩托罗拉公司。当时的摩托罗拉在面临激烈的全球竞争和持续的质量问题时,发明了这种系统的管理方法,并通过实施,获得了显著的成绩。 所谓的“Six Sigma”&#x…

Tensorflow2.0搭建网络八股

目录 引言:keras与Tensorflow2.0结合 一、六步法 1.导入头文件:import 2.收集处理训练集和测试集:train, test: 3.描述各层网model tf.keras.models.Sequential: 4.描述使用什么优化反向传播:model.c…

Python中使用print()时如何实现不换行

平时刷题的时候大家可能会发现打印字符的时候需要你不换行才能得到正确答案,那么如何实现的。下面直接看例子。 使用print()函数时其实还有个默认的参数end,来看看具体怎么回事 list [a,b,c] for i in list:print(i)打印结果:在这里插入代…

【C/C++】父类指针指向子类对象 | 隐藏

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

CleanMyMac最新版4.14Mac清理软件下载安装使用教程

苹果电脑是很多人喜欢使用的一种电脑&#xff0c;它有着优美的外观&#xff0c;流畅的操作系统&#xff0c;丰富的应用程序和高效的性能。但是&#xff0c;随着时间的推移&#xff0c;苹果电脑也会产生一些不必要的文件和数据&#xff0c;这些文件和数据就是我们常说的垃圾。那…

docker服务如何正确关停

说明&#xff1a;停止 docker 服务之前&#xff0c;先把所有的容器都停掉&#xff0c;如果没停掉&#xff0c;再重启 docker 服务之后&#xff0c;所有的容器就会成为 Exited 状态。如果你只是想停止 docker 服务&#xff0c;docker 中的容器还继续提供服务&#xff0c;需要在d…

NVIDIA DLI 深度学习基础 答案 领取证书

最后一节作业是水果分类的任务&#xff0c;一共6类&#xff0c;使用之前学习的知识在代码段上进行填空。 加载ImageNet预训练的基础模型 from tensorflow import kerasbase_model keras.applications.VGG16(weights"imagenet",input_shape(224, 224, 3),include_t…

首页搜索框传递参数,并在搜索页面中的搜索框中进行显示,搜索框绑定回车键进行搜索

实现搜索条件和搜索内容固定&#xff0c;以及回车键搜索跳转 1.写出搜索条件和搜索框 <form class"parent"><select id"searchSelect" style"border: 1px solid #325da7;border-right: none;" value"resource"><opt…

Mysql B+数索引结构

一、B树和B树区别 二、 B 树形成过程 三、页分裂过程 3.1 页分裂过程实例 3.1.1 原有数据1、3、5形成如下数据页 3.1.2 先新插入数据4&#xff0c;因为 页10 最多只能放3条记录所以我们不得不再分配一个新页&#xff1a; 新分配的数据页编号可能并不是连续的&#xff0c;也…

threejs特殊几何体(一:文字几何体对象)

threejs中文字几何体通过newTextGeometry&#xff08;&#xff09;生成&#xff0c;它被单独作为一个类存在于threejs中const txtGeo new TextGeometry("threejs", { ...opts, font: font }); 我们先看效果&#xff1a; <template><div></div> &…

RJ45接口的PCB设计布局布线注意事项

网口模块的组成主要包括了&#xff1a;RJ45网口、变压器、PHY芯片及主芯片&#xff1b;还有一种RJ45与变压器进行了集成&#xff0c;分别如图1、图2所示&#xff1b; 图1 网口模块组成-RJ45与变压器未集成 图2 网口模块组成-RJ45与变压器集成 我们常见的网口有百兆网口和千兆网…

MySQL学习笔记(八)—— 锁

首先要说明&#xff0c;有的锁是我们自己想加的时候加的&#xff0c;比如全局锁要靠我们自己用命令去加。而有的锁是mysql默认就给你加上了&#xff0c;因为mysql要保证自己最起码的安全性。 InnoDB默认加的是行级锁。 一、全局锁 1.1 用途 全局锁就是把所有的表都给锁了&am…