当前位置: 首页 > news >正文

【Qnx】Qnx coredump解析

Qnx coredump解析

coredump文件

Qnx运行的程序崩溃时,会生成coredump文件。
默认情况下这些文件默认会保存在/var/log/*.core 文件中。

解析coredump文件,可以帮忙加快分析程序崩溃的原因,比如了解崩溃的堆栈。
通常可以使用gdbcoreinfo,帮助分析coredump文件。

coreinfo

coreinfo是QNX提供的一个bin文件,这个bin用来显示CoreDump文件的信息

coreinfo [-ilmstv] file [file ...]

选项:
-i 显示进程信息
-l 显示QNT_LINK_MAP相关信息
-m 显示内存Map(Memeroy Map)
-t 显示线程信息
-v 追加debug信息输出
如果不指定这些选项,默认输出所有信息。
coreinfo官网链接:
https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.utilities/topic/c/coreinfo.html

coreinfo默认集成在Qnx的Image中,在Qnx系统终端执行即可。例如

coreinfo /var/log/test.core

输出信息类似如下内容:
包括cpu核信息、MACHINE、HOSTNAME、崩溃进程中线程状态等。这些信息,对了解程序崩溃的状态有些帮忙,但是对具体的问题解析,还是需要利用gdb工具。

 processor=ARM AArch64 num_cpus=8cpu 1 cpu=1091556528 name=*** *** Gold speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 2 cpu=1091556528 name=*** *** Gold speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 3 cpu=1091556528 name=*** *** Gold speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 4 cpu=1091556528 name=*** *** Gold speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 5 cpu=1091556544 name=*** *** Gold Plus speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 6 cpu=1091556544 name=*** *** Gold Plus speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 7 cpu=1091556544 name=*** *** Gold Plus speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cpu 8 cpu=1091556544 name=*** *** Gold Plus speed=***flags=0xc0000c7a FPU MMU V6 V7 V7_MP NEON IDIV VFP_D32cyc/sec=*** tod_adj=*** nsec=*** inc=***boot=0 epoch=1970 intr=27rate=*** scale=-16 load=1920MACHINE="******" HOSTNAME="localhost"pid=2076765 parent=1138777 child=0 pgrp=*** sid=***flags=0x49002000 umask=02 base_addr=0x397fca7000 init_stack=0x10c1000870ruid=0 euid=0 suid=0  rgid=0 egid=0 sgid=0ign=0000000000000000 queue=ff00000000000000 pending=0000000000000000fds=4 threads=2 timers=0 chans=1canstub=0 sigstub=0couldn't read stack: No such process
argc: 6 argv:  thread 1ip=0x4cec9ce290 sp=0x10c1000690 stkbase=0x10c0f80000 stksize=528384state=JOIN flags=0 last_cpu=1 timeout=00000000pri=10 realpri=10 policy=RRtls=0x10c1000dc0thread 2 SIGNALLED-SIGABRT code=0  from pid=2076765 uid=-1 value=0(0x0)ip=0x4cec9ce2a0 sp=0x10c1042760 stkbase=0x10c1002000 stksize=266240state=STOPPED flags=4000000 last_cpu=1 timeout=00000000pri=10 realpri=10 policy=RRtls=0x10c10429d0

Gdb

gdb是常用的debug工具,关于gdb的概念可自行百度理解。这里说一下Qnx上如何使用gdb。
一般来说Qnx源码中,会提供针对架构的gdb工具。这些个工具可以在Host上运行。

ARMv7ntoarmv7-gdb
AArch64ntoaarch64-gdb
x86 64-bitntox86_64-gdb

Qnx官网说明链接:https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.utilities/topic/g/gdb.html

例如:
qnx程序跑在AArch64架构下,崩溃产生了coredump文件,test.core
使用gdb的解析步骤:

  1. 首先把test.core 从qnx系统中,导入到Host上(比如Ubutun上)
  2. 在host的QNX的源码中,找到ntoaarch64-gdb(路径可能在 qnx源码/**/host/linux/x86_64/usr/bin 中)
  3. 在Host上,设置好Qnx编译环境(一般在编译qnx源码时,都会有一个sh脚本设置)
  4. 使用gdb 加载崩溃的bin(Host上编译出来的bin) 以及 test.core
# 例子,路径根据实际情况修改
**/**/host/linux/x86_64/usr/bin/ntoaarch64-gdb install/aarch64le/usr/bin/test install/test.core
  1. 如果gdb找不到bin程序需要的so等,可以通过 set solib-search-path (GDB的交互命令,网上使用方式比较多)设置so的查找路径
  2. 在gdb中运行bt即可,输出崩溃堆栈(前提:so等库时带符号的,可以在编译时加入导出debug符合的参数选项)

下面是test.core的一段输出示意(因为某些原因,部分内容用了**代替,所以只是示例)

#0  Test::start (this=0x33f06840a8) at /*****/test.cpp:100:115
#1  0x00000049e17ed874 in Test::Test111 (this=0x25a6f25990) at /*****/test.cpp:100
#2  0x00000049e17f06b4 in ****at /*****/qnx7/usr/include/c++/v1/type_traits:4294
#3  std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (Test::*)(), Test*, 2ul> (__t=...)at /*****/target/qnx7/usr/include/c++/v1/thread:342
#4  std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (Test::*)(), Test*> > (__vp=0x33f0685090) at /*****/qnx7/usr/include/c++/v1/thread:352
#5  0x00000049e1970fa8 in pthread_attr_setdetachstate (attr=0x105e0002, detachstate=1869902687) at /***/build_aarch64/lib/c/1c/pthread_attr_setdetachstate.c:30

实际上,就是把coredump从Qnx系统中copy出来,然后放到本地有Qnx开发环境,以及相关二进制+库的PC上。然后使用gdb加载即可。

相关文章:

【Qnx】Qnx coredump解析

Qnx coredump解析 coredump文件 Qnx运行的程序崩溃时&#xff0c;会生成coredump文件。 默认情况下这些文件默认会保存在/var/log/*.core 文件中。 解析coredump文件&#xff0c;可以帮忙加快分析程序崩溃的原因&#xff0c;比如了解崩溃的堆栈。 通常可以使用gdb和coreinfo…...

超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名

该系统完全在linux下运行&#xff0c;不存在使用第三方收费工具&#xff0c;市面上很多系统都是使用的是第三方收费系统&#xff0c;例如&#xff1a;某心签名工具&#xff0c;某测侠等&#xff0c;不开源而且需要每年交费&#xff0c;这种系统只是在这些工具的基础上套了一层壳…...

RocketMQ在Centos7系统上单机部署

最近因为一些信创问题&#xff0c;要将RabbitMQ替换为RocketMQ&#xff0c;因此在此分享一些RocketMQ在Centos7系统上单机部署相关过程。 优缺点 RocketMQ的优点&#xff1a; 性能优越&#xff1a;RocketMQ在处理大量消息时&#xff0c;性能优于RabbitMQ。当面临每秒数万到数…...

Vue37-非单文件组件

一、组件的两种编写形式&#xff1a; 非单文件组件&#xff1b;单文件组件。 二、创建一个组件 2-1、组件中的el 组件中不写el&#xff0c;不说为谁服务。 2-2、组件中的data 因为对象形式&#xff0c;多处复用的话&#xff0c;有引用关系&#xff0c;改一处&#xff0c;另一…...

CSS实现经典打字小游戏《生死时速》

&#x1f33b; 前言 CSS 中有这样一个模块&#xff1a;Motion Path 运动模块&#xff0c;它可以使元素按照自定义的路径进行移动。本文将为你讲解这个模块属性的使用&#xff0c;并且利用它实现我小时候电脑课经常玩的一个打字游戏&#xff1a;金山打字的《生死时速》。 &…...

推箱子-小游戏

学习目标&#xff1a; 巩固Java基础&#xff0c;数据类型、二维数组、条件语句等&#xff1b; 效果展示&#xff1a;...

AI数字人的开源解决方案

目前&#xff0c;国内外已经涌现出一些优秀的数字人开源解决方案&#xff0c;这些解决方案为开发者提供了构建数字人应用的工具和基础设施。以下是一些比较知名的数字人开源解决方案。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…...

java写一个验证码

生成验证码 内容&#xff1a;可以是小写字母&#xff0c;也可以是大写字母&#xff0c;还可以是数字 规则 长度为5 内容中是四位字母&#xff0c;1位数字。 其中数字只有1位&#xff0c;但是可以出现在任意的位置。 package User;import java.util.ArrayList; import jav…...

【星海随笔】ELK优化

ELS 再遇到大的日志文件的时候不会自动进行清理的,我们可以通过 logrotate 转储工具进行操作。 该命令是基于 Cron 实现,由系统执行,当然也可以手动进行执行例如 logrotate -f configfile# more /etc/logrotate.confweekly // 默认每一周执行一次rotate轮转工作 r…...

SQL Auto Increment

SQL Auto Increment 在关系型数据库中&#xff0c;自动增量&#xff08;Auto Increment&#xff09;是一个常见且实用的特性。它允许数据库自动为表中插入的新行分配唯一的标识符&#xff0c;通常用于主键字段。本文将深入探讨SQL中的自动增量功能&#xff0c;包括其工作原理、…...

网络安全练气篇——PHP编程语言基础

目录 PHP基础 一、PHP简介与环境搭建 什么是PHP&#xff1f; PHP环境安装 代码编辑选择 二、基本语法 PHP基本语法操作 PHP变量与输出 啥是常量? PHP注释 PHP单引号双引号声明 三、PHP表单 PHP表单 四、登录界面搭建与讲解 构建登陆页面 登陆页面端 服务器端…...

LabVIEW程序内存泄漏分析与解决方案

维护他人编写的LabVIEW程序时&#xff0c;若发现程序运行时间越长&#xff0c;占用内存越大直至崩溃&#xff0c;通常是内存泄漏导致的。本文从多角度分析内存泄漏的可能原因&#xff0c;包括数组和字符串处理、未释放的资源、循环中的对象创建等&#xff0c;并提供具体的解决方…...

JVM垃圾回收器介绍

Serial GC: 算法: 使用的是标记-清除算法。特点: 串行执行&#xff0c;适用于单CPU环境或较小的堆内存配置。在新生代和老年代的回收中都是单线程执行&#xff0c;因此在进行垃圾回收时会暂停所有应用线程&#xff08;Stop-The-World&#xff09;。 Parallel GC (也称为吞吐量优…...

subprocess隐藏cmd窗口

process subprocess.Popen(command, shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.PIPE,creationflagssubprocess.CREATE_NO_WINDOW) 添加参数即可不显示cmd运行窗口 creationflagssubprocess.CREATE_NO_WINDOW...

编程前端看什么书比较好:深入解析与推荐

编程前端看什么书比较好&#xff1a;深入解析与推荐 在编程前端的学习道路上&#xff0c;书籍无疑是我们最宝贵的财富。一本好的书籍&#xff0c;不仅可以提供系统的知识体系&#xff0c;还能引导我们深入探索技术的奥秘。然而&#xff0c;面对市面上琳琅满目的前端书籍&#…...

HarmonyOS(36) DevEco Studio 配置debug和release

在android开发中可以在build.gradle来配置realease和debug,在HarmonyOS中可以通过build-profile.json5文件中通过buildModeSet配置&#xff1a; 在DevEco Studio 中可以通过下面来选择运行debug还是release&#xff1a; 我们可以通过BuildProfile.ets里面的静态变量获取当前…...

PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)复现

PHP语言在设计时忽略了Windows对字符编码转换的 Best-Fit 特性&#xff0c;导致未授权的攻击者可以通过特定字符串绕过 CVE-2012-1823 补丁&#xff0c;执行任意PHP代码&#xff0c;导致服务器失陷。 1.漏洞级别 高危 2.漏洞搜索 fofa: app"XAMPP"3.影响范围 P…...

WHAT - React 学习系列(二)

目录 一、官方介绍二、框架具体对比1. Next.js(Pages Router)2. Remix3. Gatsby4. Expo&#xff08;用于原生应用&#xff09;5. Next.js(App Router)Next.js App Router主要特性与 Pages Router 的对比 具体使用示例创建 App Router 项目目录结构示例示例代码 总结 这一篇主要…...

Java 反射机制 -- Java 语言反射的概述、核心类与高级应用

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 010 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

【Python入门与进阶】Jupyter Notebook配置与优化

目录 1.Jupyter Notebook简介 2.Jupyter Notebook的安装 2.1 命令行安装 2.2 可视化界面安装 3.Jupyter Notebook的使用 3.1 启动 Jupyter Notebook 3.2 Jupyter Notebook 界面介绍 3.3 创建新的 Notebook 3.4 编写和运行代码单元 3.5 使用 Markdown 编写文档 3.6 保…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...