使用google breakpad 定位linux C++ 程序崩溃点(嵌入式平台)

12.5-使用Qt实现跨平台C++崩溃捕获,看这一篇就足够了(Breakpad) 一、软件奔溃捕获的意义 应用程序发布后,不能保证百分百没有bug并引发崩溃。因此,在出现崩溃的情况下需要记录崩溃详情并给用户弹出崩溃提示对话框,提示用户重启软件以及上报(上传)崩溃。 这样做意义是: 能保证软件在使用过程中发现的bug都能被收集起来,并根据崩溃详情修改bug,然后发布修复bug的版本。如果软件在使用过程中直接闪退没有任何提示,不仅用户体验不好,还无法获取崩溃的原因。之后更具用户反馈... 阅读详情
AI摘要

本文介绍了如何使用Breakpad开源库来定位程序崩溃点,包括编译集成、生成符号文件、minidump堆栈跟踪的过程,并提供了脚本化的解决方案。,

本文基于转载文章编写。如侵权请告知,将立马删除

Breakpad 是 Google 用 C++ 编写的一个开源、跨平台的崩溃报告系统,它支持 Windows、Linux 和 macOS。进程崩溃时可以产生一个较小的.dmp文件, 根据这个.dmp文件和原始程序(未strip去除调试信息前)生成的符号文件,可以打印出堆栈信息和线程执行情况。
目前,有很多大型项目都在使用 Breakpad,例如:Google Chrome、Firefox、Google Picasa、Camino、Google Earth 等。

主页: https://chromium.googlesource.com/breakpad/breakpad/
文档: https://chromium.googlesource.com/breakpad/breakpad/+/HEAD/docs
GitHub 地址: https://github.com/google/breakpad

使用流程

  • 流程图:
    在这里插入图片描述

简略版:在发布程序前,(未strip)把刚编出来热乎的程序使用dump_syms生成 项目名.sym 的符号文件(图上绿色部分)跟随版本保存起来,等程序发生崩溃获取到.dmp时,用minidump_stackwalk 和.sym符号文件生成堆栈信息调试。

其中,包含了三个主要组件:

  • Breakpad client:是一个静态库(即:libbreakpad_client.a),要编译集成到我们的程序中。用于在我们的程序中写 minidump 文件、捕获当前线程的状态、以及可执行文件/共享库的标识,并通过注册的回调通知我们。

  • Breakpad 符号转储工具:是一个程序(即:dump_syms),用于读取由编译器产生的调试信息,并以 Breakpad 自己的格式生成一个符号文件。

  • Breakpad minidump 处理器:是一个程序(即:minidump_stackwalk),用于读取 minidump 文件和符号文件,并生成一个可读的 C/C++ 堆栈跟踪。

编译

下载 Breakpad 源码;

由于 Breakpad 依赖于 LSS,所以还需要下载它(地址:https://github.com/adelshokhy112/linux-syscall-support);

转载并编辑此文时,我使用的是gitee的de-user/breakpad, LSS使用的是abuyoyo的linux_syscall_support.h,可以直接去搜他们的gitee。这个版本在 GNClinux gcc v4.8.4和arm-linux gcc v9.2.1 都可以编译。如果arm编译器过于老旧需要往前翻旧版本breakpad和改函数mmap mmap2

将 LSS 中的 linux_syscall_support.h 文件放至 breakpad/src/third_party/lss/ 目录下。

编译 Breakpad,步骤非常简单:

$ cd breakpad
$ ./configure && make
$ make
$ sudo make install

如果需要交叉编译,则编写一个make.sh去配置configure, 生成对应的Makefile后直接make即可,make install后会安装到 --prefix=YOUPATH 处

  1 #!/bin/bash
  2
  3 ROOT=$(pwd)
  4
  5 rm -rf $ROOT/_NEED
  6 mkdir $ROOT/_NEED
  7 ./configure \
  8 --prefix=$ROOT/_NEED \
  9 --exec-prefix=$ROOT/_NEED \
 10 --host=arm-linux \
 11 CC=/home/os07/device_platform/8368u_v08_4/build/tools/arm-9.2_eabihf/bin/arm-none-linux-gnueabihf-gcc \
 12 CXX=/home/os07/device_platform/8368u_v08_4/build/tools/arm-9.2_eabihf/bin/arm-none-linux-gnueabihf-g++
 13 CFLAGS=std=c++11
 14 CXXFLAGS=std=c++11

如果你指定了prefix,会安装到你指定的目录,并在该目录的/bin生成 dump_syms、minidump_stackwalk 等程序, include 和 lib有整合进你的主程序时需要的库和头文件

整合进你的程序

如果你在上一步没有指定–prefix,那命令和include会安装到默认 /usr/local处。要整合进你的程序,需要把对应的include 和lib 路径包含进你的编译脚本,并增加编译选项-lbreakpad,-lbreakpad_client
这里为了方便测试,编写一个小的测试程序去测试效果:

#include "client/linux/handler/exception_handler.h"// 在breakpad编译输出的/include/breakpad/下可以找到这个文件
#include <iostream>

//当崩溃发生的时候,会回调这个函数
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor,
                         void* context,
                         bool succeeded)
{
    std::cout << "Dump path:" << descriptor.path() << std::endl;

    return succeeded;
}

void crash(){
    int* a = nullptr;
    *a = 1;
}

int main(int argc, char* argv[])
{
    google_breakpad::MinidumpDescriptor descriptor("/tmp");
    google_breakpad::ExceptionHandler eh(descriptor, nullptr, dumpCallback, nullptr, true, -1);
    crash();

    return 0;

编译命令

arm-none-linux-gnueabihf-g++ -g -std=c++11 $ROOT/test.cpp \
-I/YOU_PATH/_NEED/include/breakpad \
-L/YOU_PATH/_NEED/lib -lbreakpad -lbreakpad_client -pthread -o test

编译运行这个程序,会在 /tmp/ 目录下生成一个 minidump 文件,并在退出之前打印该文件的路径。


生成可读的堆栈跟踪

阅读奇小葩文章的第3点,了解到还有另一种方法。这里根据上面的例子详细介绍第二种方法。

调试符号文件 .sym、崩溃文件 minidump、minidump_stackwalk,有这三样就可以打印堆栈信息。

  • 生成符号调试文件
    需要目标程序内包含调试信息(未执行strip之前),这样 dump_syms 工具才能从中解析出调试符号。
    假设,我们的程序名为 test,执行以下命令,便会生成一个名为 test.sym 的符号文件 (一定要是未strip的包含所有调试信息的程序文件):
$ dump_syms ./test > test.sym
  • 符号调试文件.sym需要放到固定目录下

这一步很关键,否则minidump_stackwalk无法打印正确的堆栈信息。
在这里插入图片描述
查看符号文件,第一行包含了生成目录结构所需的信息:

$ head -n1 test.sym 
MODULE Linux x86_64 95E20E34BE203CB093B675D606A7D7D20 test

创建以上目录结构,并将符号文件移动到该路径下:

$ mkdir -p ./symbols/test/95E20E34BE203CB093B675D606A7D7D20
$ mv test.sym ./symbols/test/95E20E34BE203CB093B675D606A7D7D20/
  • 生成堆栈跟踪信息
    当一切准备就绪,minidump_stackwalk 工具就派上用场了。
    只需将 mindump 文件和符号路径作为命令行参数传递给它,便能生成堆栈跟踪信息了。为了便于分析,可以将输出重定向至文件中,或stdout:
$ minidump_stackwalk /tmp/48596758-1d7a-4318-15edb4af-a9186ad7.dmp ./symbols > error.log

定位崩溃地点

打开上一步输出的error.log或stdout,搜索crashed,可以查看崩溃点
在这里插入图片描述
可以很清楚地看到,崩溃发生在 main.cpp 的第 16 行。
查看我们的测试程序,与预期结果一样:
在这里插入图片描述

将上述过程脚本化

方便崩溃发生即时在stdout输出,我的思路是直接在dumpCallback里保存error.log并输出stdout。
在我的程序中,当dumpCallback 被调用时,它会后台执行这个脚本:

  1 #!/bin/sh
  2
  3 if [ $# != 2 ] ; then
  4         echo "USAGE: $0 TARGET_NAME DMP_NAME OUTPUT_NAME"
  5         echo " e.g.: $0 _path/Launcher _path/48596758-xxx-xxx-xxxxx.dmp"
  6         exit 1;
  7 fi
  8
  9 #获取输入参数
 10 WR_PATH=/YOU_PATH #放.sym error.log 文件和symbols/目录的地方
 11 app_file_name=$1
 12 dmp_file_name=$2
 13 sym_file_name=Launcher# 我用了固定名称,只需要符合目录结构就可以解析。跟程序名称没关系
 14 #output_file_name=$3
 15
 16 getSymbol() {
 17     echo "@getSymbol: start get symbol"
 18     ./dump_syms ${app_file_name} >> ${sym_file_name}.sym
 19 }
 20
 21 getStackTrace() {
 25     #从第一行字符串中获取版本号
 26     version_number=$(head -n1 ${sym_file_name}.sym | cut -d ' ' -f 4)
 27     echo -e "\e[43;30;1m version=[${version_number}] \e[0m"
 28
 30     #创建特定的目录结构,并将符号文件移进去
 31     mkdir -p  ${WR_PATH}/symbols/${sym_file_name}/${version_number}
 32     mv ${sym_file_name}.sym  ${WR_PATH}/symbols/${sym_file_name}/${version_number}/
 33
 34
 35     #将堆栈跟踪信息重定向到文件中
 36     ./minidump_stackwalk ${dmp_file_name} ${WR_PATH}/symbols >> ${WR_PATH}/out.log
 37     cat ${WR_PATH}/out.log
 38 }
 39
 40 main() {
 41     getSymbol
 42     if [ $? == 0 ]
 43     then
 44         getStackTrace
 45     fi
 46 }
 47
 48 #运行main
 49 main

这个脚本执行的命令是

./printfTrack.sh   _Path/Launcher   _path/48596758-xxx-xxx-xxxxx.dmp

参考文章
https://blog.youkuaiyun.com/u012489236/article/details/107923924
https://blog.youkuaiyun.com/robert_cysy/article/details/105395799

Linux下使用backtrace定位C/C++程序崩溃 在Linux系统开发中,程序崩溃调试是开发者面临的常见挑战。调用栈(call stack)作为程序执行流程的核心数据结构,记录了函数调用的层级关系。通过分析调用栈信息,开发者可以快速定位崩溃源头,这一过程称为backtrace。Glibc提供的backtrace系列函数能够捕获当前线程的调用链,结合调试符号可实现地址到源代码的精确映射。这项技术在多线程调试、生产环境问题诊断等场景具有重要价值,特别是在处理段错误(segmentation fault)等内存问题时尤为有效。现代调试工具如addr2line、G 阅读详情

相关推荐

C++程序崩溃调试实战:从Core Dump分析到问题定位

程序崩溃是软件开发中常见的挑战,其本质是进程因未处理的异常或非法操作而意外终止。理解其原理,关键在于掌握系统在崩溃瞬间生成的完整内存快照——Core Dump(Linux)或Dump文件(Windows),它记录了线程栈、寄存器等关键现场信息。这项技术的核心价值在于,为事后调试提供了不可替代的“黑匣子”,是构建高稳定性桌面应用、后台服务和嵌入式系统的基石。通过配置系统生成完整的转储文件,并借助GDB、WinDbg等调试器配合精确的符号文件进行分析,开发者可以高效地勘查调用栈、检查内存状态,从而定位访问违例、

weixin_30435261的博客 328

基于Google breakpad编译构建和使用案例

google breakpad 跨平台crash库编译构建使用案例

whish1994的博客 1429

Qt实战进阶:从事件循环到多线程与发布排查全攻略

在桌面应用与上位机开发中,事件循环是驱动界面响应与异步任务的核心枢纽,理解它才能解决界面假死、信号槽不触发等经典难题。信号槽作为Qt的观察者模式实现,配合元对象系统,让跨线程通信与对象交互变得安全而灵活。在工程实践中,多线程常结合QThread与moveToThread使用,而网络请求需注意QNetworkAccessManager的生命周期,否则易出现post请求无法获取响应。面对qt崩溃问题,可通过Breakpad收集dump定位异常;利用QCustomPlot可将时域波形转换为频域图,结合kissff

weixin_34221775的博客 212

Google Breakpad的使用

Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合。Breakpad由三个主要组件:client 是一个库,以library的形式内置在你的应用中,以配置客户端发生了崩溃时写入一个minidump文件symbol dumper 是一个程序,读取由编译器产生的调试信息(debugging information),并生成一个使用Breakpad格式的符号文件( symbol file)

xiyuan的博客 1868

嵌入式 Linux GDB 核心转储快速定位程序崩溃问题

核心转储文件是在程序崩溃时生成的文件,其中包含了程序崩溃时的内存映像和执行堆栈信息。总结起来,使用 GDB 和核心转储文件可以帮助我们快速定位嵌入式 Linux 系统中程序崩溃的问题。通过分析核心转储文件,我们可以获取程序崩溃时的执行堆栈和变量信息,从而更容易地找到问题的根源。接下来,我们将演示如何使用 GDB 和核心转储文件来定位程序崩溃问题。在分析完核心转储文件后,我们可以得到有关程序崩溃的关键信息。接下来,我们可以使用 GDB 来分析核心转储文件。接下来,我们需要在程序崩溃时生成核心转储文件。

CodeSageX的博客 584

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1284

如何在嵌入式Linux系统(海思平台)上快速部署Breakpad捕获崩溃日志

本文详细介绍了在海思嵌入式Linux平台上部署Google Breakpad崩溃捕获系统的完整方案。针对嵌入式系统资源受限、传统core文件难以分析的痛点,Breakpad通过生成轻量级minidump文件,将符号解析工作转移至开发主机,实现了高效、低开销的崩溃分析。文章提供了从交叉编译、集成到符号化解析的实战步骤,是提升海思平台软件稳定性的关键工具。

i7j8k9l的博客 959

Google Breakpad应用:崩溃分析工具指南

本文还有配套的精品资源,点击获取 简介:Google Breakpad是一个开源崩溃转储工具,支持Windows、Linux和macOS,旨在帮助开发者捕捉应用程序崩溃时的关键信息。该工具包括Minidump生成器、符号处理器和服务器组件,能够生成可读的堆栈跟踪,优化崩溃率统计和多进程支持。本文详细介绍了Breakpad的安装、配置、Minidump生成和处理方法,并解释了...

weixin_35756690的博客 2533

C++崩溃诊断实战:Google Breakpad集成与Minidump分析指南

在C++开发中,程序崩溃是影响软件稳定性的核心挑战之一,尤其在发布后的生产环境中,传统日志往往无法捕获崩溃瞬间的完整现场。崩溃报告系统通过捕获进程状态、线程堆栈和寄存器信息,生成小型转储文件(Minidump),为事后分析提供关键‘现场快照’。其技术价值在于将难以复现的线上崩溃转化为可精准定位的调试信息,极大提升了问题诊断效率。这一机制广泛应用于需要高可靠性的后台服务、桌面应用及嵌入式系统。本文以Google Breakpad为例,深入解析其通过Client Library、dump_syms和minidu

weixin_30435261的博客 359

google_breakpad 源码

google_breakpad 源码,一个非常实用的跨平台的崩溃转储和分析模块,能够捕获程序崩溃报告,生成dump文件。具体可以见我的博客——Google Breakpad 在 windows下捕获程序崩溃报告。

富士SC2022,C325,C328打印机扫描到网络详细教程

富士打印机SC2022,C328,C325等型号扫描到电脑教程

weixin_41926602的博客 1万+

breakpad: Native crash 日志收集工具

前言 现在大部分应用都会有Java层的崩溃日志收集机制,一般就是程序crash后,展示一个上报界面,用户点击就上传了。 但是Native程序crash了,很少有做处理的,几个方面原因: 大部分应用不用C/C++编写,或者说用也只是很小的一个模块。编写一个高质量的Native crash工具本身就不是很容易,搞不好自己还引发崩溃:( 。 正题 今天发现了Google开源了一

Keivin 7017

jetson nano网络配置(有线、无线、USB)

注意:本节内容使用Jetson nano B01 版本或Jetson nano ALT 版本安装方式相同,在安装无线网卡等设备时,由于线材和设备比较脆弱,需要轻拿轻放,接口连接不上时,需要重新对准接口在进行连接,不要强行连接。Jetson nano 需要连接网络来进行更多的操作,本节就来讲解Jetson nano 的三种网络连接方法。有线:我们可以使用网线连接Jetson nano 的RJ45 接口,实现联网。

m0_73841621的博客 1万+

Linux Qt程序崩溃文件生成与堆栈定位实战

在 Linux 系统中,程序崩溃文件通常指 core dump——进程收到 SIGSEGV、SIGABRT 等致命信号时,内核将内存现场转储到磁盘,配合 gdb 可还原调用栈与局部变量。Qt 应用因事件循环、信号槽和线程模型,仅依赖系统 core 往往不够,还需应用层信号处理与 backtrace 记录上下文。掌握 core_pattern、ulimit、调试符号和崩溃日志,能把“现场无日志”变成可追溯的堆栈证据,适用于工业上位机、嵌入式界面、后台服务等排障。围绕 Linux、Qt、程序崩溃文件,进一步梳理

weixin_33862993的博客 389

医学图像处理(一)使用U-Net进行MRI的肝脏分割

医学图像处理(一)使用U-Net进行MRI的肝脏分割数据集搜集训练集和测试集划分问题一: 测试集不包括GroundTruth问题二:T1和T2的数据能一起训练吗?问题三: T1的图像在文件夹中分成了InPhase和OutPhase,这个有什么区别?分离出肝脏将dicom文件转换为png格式数据增强U-net网络搭建自定义DatasetMain.py实验结果总结 图像分割小白一枚,之前接到一个MRI图像肝脏分割的任务。对于医学图像分割,第一想到的就是Unet. Unet在2015的MICCAI上首次提出,在医

qq_34003876的博客 2万+

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3404

C++程序崩溃诊断:调用栈捕获与符号解析实战指南

在软件开发和运维中,程序崩溃是常见且棘手的问题,尤其对于C++这类系统级语言。理解程序崩溃后的诊断技术,关键在于掌握调用栈(Call Stack)这一核心概念。调用栈记录了函数调用的层级关系,其原理是通过栈帧指针链式回溯,获取每个函数的返回地址。这项技术的价值在于,它能将崩溃瞬间的机器状态转化为可读的执行路径,极大提升问题定位效率。在应用场景上,无论是服务端后台、游戏引擎还是嵌入式系统,都需要在发生段错误(Segmentation Fault)、断言失败或未捕获异常时,自动捕获并解析调用栈。本文聚焦于C++

weixin_33863087的博客 325

【华为OD技术面试真题 - 技术面】- 测试面试题(1)

专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录黑盒测试:白盒测试:基本功能验证:边界条件测试:空白输入测试:特殊字符和格式测试:响应时间测试:压力测试:针对在不同系统和设备上测试聊天窗口功能,以及网络正常的前置条件,我们可以增加以下测试用例:系统和设备:PC端测试:移动端测试:功能验证:前置条件:网络性能影响测试:Postman:SoapUI:JMeter:Rest-Assured:Tricentis Tosca:ReadyAPI:CI/CD工具集成:测试管理工

算法大师! 3690

C++游戏开发防崩溃实战:四大黄金法则构建稳定程序框架

在C++程序开发中,异常处理和内存管理是保障软件稳定性的核心基础。异常安全编程通过RAII(资源获取即初始化)原则,将资源生命周期与对象绑定,确保在异常发生时资源能被自动释放,防止泄漏。智能指针(如unique_ptr、shared_ptr)则进一步自动化内存管理,但需警惕循环引用问题,可通过weak_ptr破局。这些技术对于构建高可靠性的实时系统,如游戏引擎和后端服务,具有关键价值。它们能有效应对程序崩溃、内存泄漏等常见顽疾,提升用户体验和软件质量。本文聚焦于游戏开发场景,系统性地阐述了从编码习惯到调试工

weixin_34050519的博客 446

Python爬虫实战:亚马逊中国模拟登录与二次验证全解析(2026最新版)

在数据驱动的商业时代,亚马逊作为全球最大的电商平台,其商品数据、价格波动、评论信息、库存状态等对市场分析、竞品研究、价格监控具有极高的价值。然而,亚马逊的反爬虫机制堪称行业标杆——从请求指纹校验、动态令牌、行为分析到二次验证(2FA),层层设防。本篇文章将带你从零开始,使用2026年最新的Python技术栈,完整实现亚马逊中国(z.cn)的模拟登录,并攻克二次验证难题。郑重声明:本文仅限技术研究与个人学习用途,严禁用于批量抓取、价格劫持、账户爆破等违法违规行为。

2201_76125261的博客 378

第1集:认识 Claude Code —— AI 编程新纪元

1. 定义 Claude Code:终端中的 AI 编程代理Claude Code 是 Anthropic 公司于 2025 年 5 月正式推出的命令行 AI 编程工具,它不只是一个代码补全工具,而是一个能够理解项目、自主执行任务的**终端 AI 代理(Agent)。它的核心理念是 **"生于终端,活于终端"** (lives in your terminal)。与深度嵌入图形界面(GUI)的工具不同,Claude Code 选择直接融入开发者最原始、最核心的工作环境——命令行。

dianziyao_的博客 865

google_breakpad库的基本使用

程序异常崩溃原因分析

ZefinNg的博客 1493

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2067

Google Breakpad捕获程序崩溃异常

文章目录一、Linux平台1、下载2、编译安装3、环境配置二、Windows平台 一、Linux平台 1、下载 https://github.com/google/breakpad 2、编译安装 解压到目录breakpad,然后在命令窗口cd到改目录下。执行命令: ./configure --prefix=/opt/breakpad-ubuntu-x64 执行命令:make。会报错: In file included from ./src/client/linux/dump_writer_common/t

hezhanran的博客 3021

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

利用Google Breakpad分析C++应用崩溃原因

最终会得到debug.txt文件,发生崩溃时程序的堆栈信息保存在里面。可以打开debug.txt文件,查找程序在哪个位置上发生崩溃。由于Breakpad依赖LSS,所以在编译前需要解决依赖问题。Google Breakpad的介绍略过,这里只介绍Google Breakpad的基本使用。定位到crash位置后,就可以去修改你的程序了。一、下载并编译breakpad。二、编译测试程序及脚本文件。

hi_changeworld的博客 896

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

崩溃捕获google_breakpad源码编译及使用

简述: breakpad是一个比Linux core机制更强大的、用于记录程序崩溃时信息的工具。 breakpad是google开发的一个跨平台C/C++ dump捕获开源库和工具套件,可用来发布删除了编译器调试信息的应用程序。在程序崩溃时,将崩溃信息记录在一个小巧的微软minidump格式文件中,支持将其发送回服务器,并且可以从这些minidump和符号文件来生成C和C++堆栈跟踪。breakpad可以在程序崩溃时触发dump写入操作,也可以在没有触发dump时主动写d...

hebbely的博客 1617

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: C/C++ 使用 # 打印枚举常量的枚举名称字符串
下一篇: 记录交叉编译环境配置--海思开发板的 嵌入式nginx和 php的移植
温柔大猩猩
博客等级 码龄7年 65粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值