1、出错一般来说是两种情况: (1)代码逻辑出错了 (2)传入参数出错了 2、在上述情况都正确的情况下,那么业务逻辑可能是正常执行了。这时错误可能就是其他原因: (1)出错的代码在别的地方 (2)rpc调用超时 (3)......
EasyCVR视频融合平台基于云边端协同架构,支持海量视频汇聚管理,平台具备强大的接入、处理、分发、分析等能力,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等(具体见下图)。
上电后一段时间进入硬件异常,或执行某个功能就进入硬件异常,我们可以方便的通过IDE软件或者嵌入的异常分析代码来锁定问题位置。
今天我在有GPU的linux上执行 "nvidia-smi"命令,想查看一下nvidia 版本,但是被提示Failed to initialize NVML: Driver/library version mismatch。
前言 Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机 在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计, 支持内核线程以及动态装载内核模块的能力。 Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核 的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统定制一个更高效,更稳定的内核,就需要手动编译Linux内
这里,你现在可以知道System.map文件是干什么用的了。 每当你编译一个新内核时,各种符号名的地址定会变化。 /proc/ksyms 是一个 "proc文件" 并且是在内核启动时创建的。实际上 它不是一个真实的文件;它只是内核数据的简单表示形式,呈现出象一个磁盘文件似 的。如果你不相信我,那么就试试找出/proc/ksyms的文件大小来。因此, 对于当前运行的内核来说,它总是正确的.. 然而,System.map却是文件系统上的一个真实文件。当你编译一个新内核时,你原 来的System.map中的符号信息就不正确了。随着每次内核的编译,就会产生一个新的 System.map文件,并且需要用该文件取代原来的文件。
上节我们了解到了预备(信号是什么,信号的基础知识)再到信号的产生(四种方式)。今天我们了解信号的保存。信号产生,进程不一定立马就去处理,而是等合适的时间去处理,那么在这段时间内,进程就需要保存信号,到了合适时间再去执行!
前几天在看Linux内核源码时,发现一个net_device设备框架的一个问题,以至于upstream的内核源码中,至少有12个设备驱动和虚拟设备存在内存泄漏的风险。
Linux内核是Linux操作系统的核心,也是整个Linux功能体现的核心,就如同发动机在汽车中的重要性。内核主要功能包括进程管理、内存管理、文件管理、设备管理、网络管理等。Linux内核是单内核设计,但却采用了微内核的模块化设计,支持内核线程以及动态装载内核模块的能力。
一般在写Windows内核程序的时候,经常会出现蓝屏的问题,这个时候一般是采用记录下dump文件然后用windbg查看得方式,具体的过程就不说了,网上一大堆的内容。现在我主要记录自己当初按照网上的方案出现windbg的open crashdump项呈现灰色的情况。就像下面这样
笔者将《unix环境高级编程》主要内容总结为三篇:文件篇,进程篇,高级io和进程间通信三大板块。本文是unix环境高级编程系列文章第一篇:文件篇。该篇主要包括:
Vmware + ubuntu10.10 (32位)+ linux-2.6.32.71.tar.xz
进程信号(上)一文中已经介绍了进程信号的概念性内容,本文我们介绍信号如何保存,以及信号捕捉的具体过程(画图理解)。同时还有核心转储、可重入函数、关键字volatile以及SIGHLD信号等补充内容。
1.概述 某年某月某日某项目的线上分布式文件系统服务器多台Linux系统kernel崩溃,严重影响了某项目对外提供服务的能力,在公司造成了不小影响。通过排查线上问题基本确定了是由于linux内核panic造成的原因,通过两个阶段的问题排查,基本上确定了linux内核panic的原因。排查问题的主要手段就是网上查找资料和根据内核错误日志分析并且构造条件重现。本文档就是对自己在整个问题排查过程中的总结。 2.第一阶段 因为刚出现问题的时候大家都比较紧急,每天加班都很晚,也制定了很多问题重现和定位原因的计划
EasyCVR是我们所有视频平台中支持协议最广泛的视频管理平台,可支持多协议、多类型的海量设备接入与分发,包括国标GB28181协议、RTMP、RTSP/Onvif等安防标准协议,以及厂家私有协议如海康ehome、海康SDK、大华SDK等。在视频输出上,可支持RTSP、FLV、HLS、WebRTC等格式。
为了执行网络I/O,一个进程(无论是服务端还是客户端)必须做的第一件事情就是调用socket函数。
WARP 是 Cloudflare 提供的一项基于 WireGuard 的网络流量安全及加速服务,能够让你通过连接到 Cloudflare 的边缘节点实现隐私保护及链路优化。其连接入口为双栈 (IPv4/IPv6),因此单栈服务器可以连接到 WARP 来获取额外的网络连通性支持。
最近因为搭建scutosc的论坛,买了一台新的腾讯云的2核4G的服务器,但是开机后发现htop命令显示内存只有3.3G:
之前有读者在字节面试的时候,被问到:TCP 和 UDP 可以同时监听相同的端口吗?
前面,张戈博客在折腾 Nginx 的 SSL 优化时,注意到前人在 Nginx 的 listen 配置中,添加了 fastopen=3 reuseport 这 2 个参数。 于是脑补了下,原来是启用
我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCESS结构来存储我们的进程信息.
在编写驱动程序的时候,常用的一个结构是NTSTATUS,它来表示操作是否成功,但是对于失败的情况它的返回码过多,不可能记住所有的情况,应用层有一个GetLastError函数,根据这个函数的返回值可以通过错误查看器来查看具体的错误原因,但是内核中就没有这么方便了,我之前在网上找资料的时候发现很多人都是把错误码和它的具体原因都列举出来,然后人工进行对照查找,这样很不方便,有没有类似于应用层上错误码查看工具的东西呢?终于皇天不负有心人,我在微软官网上找到了FormatMessage的说明,自己实现了这个功能,现在讲这个部分记录下来,以供大家参考
linux 中最常用的 IO 模型是同步 IO,在这个模型中,请求发出后应用程序会阻塞直到满足条件(阻塞 IO),或在不满足条件的情况下立即返回出错(非阻塞 IO),这样做的好处是程序在等待 IO 请求完成时不会占用 CPU。 POSIX 定义了异步 IO 应用程序接口(AIO API),linux 2.6 以上版本的内核也实现了内核级别的异步 IO 调用。 异步 IO 的基本思想是允许进程发起很多 IO 操作,而不用阻塞任何一个,也不用等待任何操作的完成,直到 IO 操作完成时,进程可以检索 IO 操作的结果。
WireGuard 的安装和使用条件非常苛刻,对内核版本要求极高,不仅如此,在不同的系统中,内核,内核源码包,内核头文件必须存在且这三者版本要一致。所以一般不建议在生成环境中安装,除非你对自己的操作很有把握。Red Hat、CentOS、Fedora 等系统的内核,内核源码包,内核头文件包名分别为 kernel、kernel-devel、kernel-headers,Debian、Ubuntu 等系统的内核,内核源码包,内核头文件包名分别为 kernel、linux-headers。
在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。
本人大二,东南大学一个软工狗,正在修一门名为《操作系统原理》的坑爹课!前几天做一个实验:编译Linux内核并向其增加一个系统调用。这个实验实在是太让人无语了,各种坑!昨天这个时候,我还在苦苦煎熬中。在今天凌晨四点才做好。为了让其他人少走一些弯路,鄙人就把自己的经验以及教训写下来。里面会有一些不足,希望大家多多指教~
1、准备virtualbox增强功能VBoxGuestAdditions.iso 默认安装virtualbox时就没有增强功能的iso 自行下载VBoxGuestAdditions.iso备用 如还是没有可以去官网另外下载 http://download.virtualbox.org/virtualbox/5.0.2/VBoxGuestAdditions_5.0.2.iso
beagle是linux的desktop search软件,跟winows下的google desktop search类似的东西,它可以搜索各种各样格式的文件,但是目前只是测试版,很多功能还不完善,但是基本上已经可以使用了,软件的原理跟普通的搜索引擎差不多,先需要启动beagle deamon 进程做文件索引,如果没有最新的具有硬盘数据修改通知功能的内核,beagle进程就需要一边又一边的不辞辛劳的查看用户目录数据,看是否有所改变,如果更新了最新的内核,内核在用户修改硬盘数据的时候,会给bea
摘要总结:本文介绍了从驱动程序加载到内核的流程和原理,并通过实例详细阐述了驱动程序加载的具体过程、驱动程序与内核的交互以及驱动程序加载失败的原因和解决方法。
今天查看Linux内核源码,出现一个很奇怪的用法。可以在静态编译期的断言。 1. 内核源码 kernel.h BUILD_BUG_ON_ZERO判断表达式非零值编译器报错; BUILD_BUG_ON_NULL判断表达式指针地址非空报错。 /* Force a compilation error if condition is true, but also produce a result (of value 0 and type size_t), so the expression can be use
在嵌入式开发中,偶尔会遇到Hard Fault死机的异常,常见产生Hard Fault的原因大致有以下几类:
读者群里一位同学的线上服务器出现一个诡异的问题,执行任何命令都是报错“fork:无法分配内存”。这个问题最近出现的,前几次重启后解决的,但是每隔 2-3 天就会出现一次。
ptrace 函数 : 在 C 标准库 中有一个 ptrace 函数 , 该函数是一个系统调用方法 , 可以监视进程执行 , 查看 / 更改 被监视进程的 内存 和 寄存器 情况 , 常用于断点调试 ;
一、共享内存简介 共享内存区是最快的IPC形式,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。 即每个进程地址空间都有一个共享存储器的映射区,当这
同时,github上面有很多项目用于stm32等cortex 内核的HardFault_Handler故障查找,可以到硬汉电子论坛去看看,我这里记得segger有SEGGER_HardFaultHandler.c和HardFaultHandler.S,硬汉哥已经将做了stm32的移植修改工作。
一、initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件。当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统,然后内核检查rootfs中是否包含有init文件,如果有则执行它,作为PID为1的第一个进程。这个init进程负责启动系统后续的工作,包括定位、挂载“真正的”根文件系统设备(如果有的话)。如果内核没有在rootfs中找到init文件,则内核会按以前版本的方式定位、挂载根分区,然后执行 /sbin/init程序完成系统的后续初始化工作。 这个压缩过的cpio格式的打包文件就是initramfs。编译2.6版本的linux内核时,编译系统总会创建initramfs,然后把它与编译好的内核连接在一起。内核源代码树中的usr目录就是专门用于构建内核中的initramfs的,其中的initramfs_data.cpio.gz文件就是initramfs。缺省情况下,initramfs是空的,X86架构下的文件大小是134个字节。
排好队,跟我一起涨知识 什么是Shell?Shell的中文意思是“外壳”,至于啥是Shell,你确定你真的知道?今天,我们就来谈谈,什么是Shell,它是干嘛的,有哪些优点… 首先说说Shell、内核
该文介绍了如何通过修改配置、开启ICAHE等方法来加快内核启动速度,并给出了具体的代码示例。
编译测试: 1.将写好的uboot复制到linux下面 2.make编译,然后将错误的地方修改,生成boot.bin (编译出错的解决方案:http://www.cnblogs.com/lifexy/
描述:官方介绍 strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。其底层的实现方式是基于ptrace特性;
前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制!
对于Android开发来说,尤其是新手(没错,我自己就是noob?),有很多种开发调试的方案。比如Genymotion+VirtualBox搭配方案(在我的笔记本上这种方案性能最低,可能因配置而异)、
不难看出上面的死循环在代码层面是永远无法结束程序的,那是否还有别的办法?对于死循环来说,最好的方式就是使用Ctrl+C对其进行终止。
STDIN_FILENO 0 STDOUT_FILENO 1 STDERR_FILENO 2
linus 林纳斯 赫尔辛基大学 在自己的笔记本上安上自己写的操作系统 基于Linux内核
为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型
周末的时候,有位读者疑惑为什么 Linux man 手册中关于 netstat 命令中的 tcp listen 状态下的 Recv-Q 和 Send-Q 这两个信息的描述跟我的图解网络写的不一样?
在讲解宏内核和微内核的区别之前,我们可以用一个通俗的例子来理解:想象你的电脑是一家大公司,而内核(操作系统的核心部分)是这家公司的管理层。
领取专属 10元无门槛券
手把手带您无忧上云