- 博客(175)
- 资源 (34)
- 收藏
- 关注
转载 VxWorks下Telnet客户端的C语言实现代码
Telnet 协议是 TCP/IP 协议族中应用最广泛的协议。它允许用户(Telnet 客户端)通过一个协商过程来与一个远程设备进行通信。Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现,NVT 是虚拟设备,连接双方(客户机和服务器)都必须把它们的物理终端和 NVT 进行相互转换。
          2022-08-21 17:04:30
           822
822
        
原创 boot.bin 流程
U-BOOT流程: 1.内核由U-Boot引导。 2.U-Boot由FSBL引导、启动。 3.FSBL由ZYNQ片内BootROM引导、启动。启动设置: MIO3-5 引脚设置启动方式 SD、qpsi、nor flash、nand flash等。QSPI 启动流程: 1. 初始化MIO引脚 2. 初始化QSPI设备, 驱动QSPI设备 3. 对QSPI读写测试 4. 从QSPI中读取BOOT.bi...
          2022-05-22 10:26:55
           876
876
        
转载 Linux c++ 性能分析工具gprof
程序分析工具不同于调试器,它只产生程序运行时某些函数的调用次数、执行时间等等宏观信息,而不是每条语句执行时的详细信息。Gprof是Linux下一个强有力的程序分析工具。对于C、Pascal或者Fortran77语言的程序,它能够以“日志”的形式记录程序运行时的统计信息:程序运行中各个函数消耗的时间和函数调用关系,以及每个函数被调用的次数等等。从而可以帮助程序员找出众多函数中耗时最多的函数,也可以帮助程序员分析程序的运行流程。相信这些功能对于分析开源代码的程序员来说,有着相当大的诱惑力。用gprof分..
          2022-05-20 17:56:08
           887
887
        
转载 使用blktrace统计磁盘块I/O访问频率
如果我们想知道,在一段时间内,那一个磁盘块被读写的频率最高,怎么办? 我问这个问题是看到taobao kernel wiki上面有这么一段话,看了我十分心痒:通过对blktrace的输出结果进行分析,我们可以对特定时间段内发生的读、写操作的磁盘块进行I/O频次统计。结合通过将磁盘块I/O频度统计和page cache命中率统计相结合,就可以比较有效的判断服务器节点的cache使用效率。通过这套工具,CDN系统修正了一个固态硬盘上cache管理的缺陷,显著提高了I/O性能(详细信息) ...
          2022-05-15 10:00:34
           514
514
        
转载 linux下强大的ELF文件分析工具 -- readelf
From:ELF格式文件符号表全解析及readelf命令使用方法_yasi_xi的博客-CSDN博客readelf命令:http://man.linuxde.net/readelfELF文件格式解析:ELF文件格式解析 - 综合编程类其他综合 - 红黑联盟ELF文件格式解析:ELF文件格式解析_yunshouhu的博客-CSDN博客可执行文件(ELF)格式的理解------系列文章:可执行文件(ELF)格式的理解 - 深海的小鱼儿 - 博客园Linux内核分析——ELF文件格式分析:Li
          2022-05-08 17:42:53
           4222
4222
        
转载 ELF文件格式
ELF文件格式前言 ELF文件的结构 ELF文件中各个字段的用途 ELF头(ELF Header) 段表(Section Header table) 符号表(Symbol Table)ELF文件类型 说明 实例 Relocatable File 可重定位文件 未链接之前的ELF文件,可用于链接可执行文件或静态链接库 Linux下的".o"文件,Windows下".obj"文件 Executable File 可执行文件 最终的可执行程序 如Li
          2022-05-08 17:15:17
           612
612
        
转载 linux下强大的ELF文件分析工具 -- nm
什么是nmnm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件、库文件、可执行文件中的符号表,返回二进制文件中各段的信息。目标文件、库文件、可执行文件首先,提到这三种文件,我们不得不提的就是gcc的编译流程:预编译,编译,汇编,链接。 目标文件:常说的目标文件是我们的程序文件(.c/.cpp,.h)经过预编译,编译,汇编过程生成的二进制文件,不经过链接过程,编译生成指令为: gcc(g++) -c file.c(file.cpp) 将生成对应的file.o文件,.
          2022-05-08 17:06:57
           1054
1054
        
原创 linux下Segmentation Fault生成coredump文件进行gdb调试
1、在linux下运行程序出现段错误,如果程序不是很大还比较好找,但是如果程序很大,会比较难以定位;在linux下可以支持生成coredump文件,使用gdb来解析Segmentation Fault时发生了什么,可以比较方便的查看程序崩溃的位置;2、一般linux系统都是默认关闭coredump文件生成,需要执行命令打开;实际上就是配置生成coredump的文件大小,系统默认为0,即不产生coredump文件;ulimit -c unlimited3、编译源代码时makefile编译选项添..
          2022-05-08 14:39:33
           859
859
           1
1
        
转载 arm上backtrace的分析与实现原理
前言我们往往在进行嵌入式开发的过程中,需要借助一些调试手段进行相关调试,比如在调试stm32的时候,可以在keil中利用jtag或者stlink进行硬件上的仿真与调试,一些高频的arm芯片也会使用jtag之类的硬件调试工具,还有trace32等等,但是这些往往需要借助一些硬件工具进行分析。当然,我们可以进行软件层面的分析。定位问题的方式通常有以下三点:1.通过串口打印信息进行业务逻辑的梳理,结合代码设计进行分析2.在程序死机的时候,输出的函数调用栈关系进行分析,结合符号文件进行跟踪定位3.在
          2022-05-07 15:57:06
           1409
1409
        
转载 linux下定位崩溃,backtrace + addr2line + maps
一、导读Backtrace中,一般都只有一些地址。但是利用addr2line这个工具,就可以找到对应的代码行。前提条件是可执行程序或者动态链接库编译的时候带-g选项。具体来说,分两种情况: 如果关注的一行backtrace位于一个可执行文件中,那么直接addr2line -e <executable> <address> 如果关注的backtrace位于一个动态链接库中,那么麻烦一些,因为动态链接库的基地址不是固定的。这个时候,首先要把进程的memory ma
          2022-05-07 15:34:54
           2664
2664
        
原创 LINUX C/C++捕获段错误,打印出错的具体位置(精确到哪一行)  --Xilinx ARM版本
arm signalsegment failarm-xilinx-linux-gnueabi-gcc
          2022-05-06 18:09:13
           1749
1749
        
转载 linux SIGSEGV 信号捕捉,保证发生段错误后程序不崩溃
在linux中编程的时候 有时候 try catch 可能满足不了我们的需求。因为碰到类似数组越界 ,非法内存访问之类的 ,这样的错误无法捕获。下面我们介绍一种使用捕获信号实现的异常 用来保证诸如段错误之类的错误发生时程序不会崩溃,而是跳过代码继续执行。首先我们来看看发生段错误之后系统的处理。发生段错误后系统会抛出 SIGSEGV 信号 ,之后 调用默认的信号处理函数 ,产生core文件 ,然后关闭程序 。那有没有一种办法可以保证程序不会死掉呢,当然是有的 。首先我们想到的是 截获改信号,调用自己的
          2022-05-06 16:02:08
           1355
1355
        
转载 segmentation fault 定位
我们在Linux下进行程序开发,如果程序代码不严谨,会经常遇到segmentation fault1报错,这种报错的结果就是程序会直接挂掉,很难在程序里一下子定位到问题代码。原因segmentation fault 就是经常说的内存泄露/溢出: 当一个进程执行一个无效的内存引用,或发生断错误时,会触发 SIGSEGV信号,内核默认的动作就是 终止该进程。这个最常见的就是,比如我们使用了 非法指针:1 #include <stdio.h>2 #include <s..
          2022-05-06 15:49:15
           1718
1718
        
转载 Linux手册翻译——sigaction(2)
sigaction, rt_sigaction - 检查和修改信号的Action(这里的Action语义同signal(7)中的disposition)#include <signal.h> int sigaction(int signum, const struct sigaction *restrict act, struct sigaction *restrict oldact);sigaction() 系统调用
          2022-05-06 14:13:01
           1230
1230
        
原创 linux手册翻译——ucontext(3)
2021.06.22 13:42:47字数 213阅读 240ucontext—— 用户线程上下文Standard C Library (libc, -lc)#include <ucontext.h> /* Userlevel context. */typedef struct ucontext_t { unsigned long int __ctx(uc_flags); struct ucontext_t *uc_link; sta...
          2022-05-06 14:08:06
           284
284
        
转载 通过coredump - 用backtrace和addr2line 查找异常函数栈
为什么不想要coredump?也许你会说,coredump很好啊,程序异常崩溃时候,coredump会提供程序的内存、堆栈、寄存器、函数栈等各种信息,是定位BUG的利器啊。的确,我也同意,coredump有诸多好处。但是有一种场景让我不得不放弃它 -如果程序运行时占用大量内存,异常崩溃时生成的coredump文件可能会非常非常大。比如,某个程序运行时占用20GB内存,当它异常时可能会生成40GB大小的core文件,而生成文件的写盘过程非常缓慢,这会严重影响系统的整体运行情况。可以假想,这个程序如果.
          2022-05-06 13:41:25
           1248
1248
        
转载 linux ucontext族函数的原理及使用
ucontext函数族这里的context族是偏向底层的,其实底层就是通过汇编来实现的,但是我们使用的时候就和平常使用变量和函数一样使用就行,因为大佬们已经将它们封装成C库里了的我们先来看看寄存器寄存器:寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果我们常用的寄存器是X86-64中的其中16个64位的寄存器,它们分别是%rax, %rbx, %rcx, %rdx, %esi, %edi, %rbp, %rsp%r8, %r9, %r10, %r11, %
          2022-05-06 11:31:34
           1729
1729
        
转载 linux中sigaction函数详解
一、函数原型:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);signum参数指出要捕获的信号类型,act参数指定新的信号处理方式,oldact参数输出先前信号的处理方式(如果不为NULL的话)。二、 struct sigaction结构体介绍struct ...
          2022-05-05 10:49:26
           435
435
        
转载 关于Segmentation fault (core dumped)几个简单问题
有的程序可以通过编译,但在运行时会出现Segment fault(段错误)。这通常都是指针错误引起的。但这不像编译错误一样会提示到文件一行,而是没有任何信息。一种办法是用gdb的step, 一步一步寻找。但要step一个上万行的代码让人难以想象。 我们还有更好的办法,这就是core file。如果想让系统在信号中断造成的错误时产生core文件, 我们需要在shell中按如下设置:#设置core大小为无限ulimit -c unlimited#设置文件大小为无限ulimi...
          2022-05-05 10:49:10
           1075
1075
        
转载 linux SIGSEGV 信号捕捉,保证发生段错误后程序不崩溃
在linux中编程的时候 有时候 try catch 可能满足不了我们的需求。因为碰到类似数组越界 ,非法内存访问之类的 ,这样的错误无法捕获。下面我们介绍一种使用捕获信号实现的异常 用来保证诸如段错误之类的错误发生时程序不会崩溃,而是跳过代码继续执行。首先我们来看看发生段错误之后系统的处理。发生段错误后系统会抛出 SIGSEGV 信号 ,之后 调用默认的信号处理函数 ,产生core文件 ,然后关闭程序 。那有没有一种办法可以保证程序不会死掉呢,当然是...
          2022-05-05 10:17:46
           2639
2639
        
原创 二进制文件比较工具
二进制文件比较编辑工具(Fairdell HexCmp2) 绿色中文版http://www.skycn.com/soft/appid/41125.html相当好用 !!!!
          2022-05-04 15:06:25
           7551
7551
           1
1
        
原创 TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞 这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·!”)。闲话少说,我们先看一下技术背景:Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网..
          2022-05-04 15:03:12
           639
639
        
转载 Linux debug : addr2line追踪出错地址
调试zSeries上的Linux应用程序类似于调试其他体系结构上的Linux应用程序。对于有经验的Linux开发人员,最大的挑战是理解新的系统体系结构。对于刚接触Linux的大型机开发人员,掌握新的调试工具似乎是一项令人畏惧的任务。不要害怕。本文将提供一些有用的提示来帮助您入门。 学问来自实践,但是对于调试工具,在没有出现问题而迫使您去修复它们之前,“实践”是不会发生的。考虑到这点,下面将提供让您入门的“速成”指南。 User Debug 日志记录 调试一个崩溃的程序的第一步...
          2022-05-04 14:47:56
           3872
3872
        
USB磁盘识别 VS2008
2011-06-14
win7+vc6 不能添加文件bug
2013-03-26
C++ 通用MakeFile
2020-12-05
vxworks-device-driver-developers-guide-vol 驱动编程
2024-06-03
Visual Leak Detector 2.2.3 免安装.rar
2014-09-03
RTP打包H264 udp发送
2014-04-03
         
      
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
 RSS订阅
RSS订阅