自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (2)
  • 收藏
  • 关注

转载 用户空间程序的函数跟踪器 (Function Tracer)

翻译说明:这是一个日本人写的用户态下的函数tracer, 我们知道系统调用可以用strace, 库调用可以使用ltrace, 但是linux下竟然没有一个比较有名的用户程序的tracer, 这真是比较奇怪。这个工具好的地方就是用ptrace系统调用来实现,只要跟踪的程序没有被strip,就可以使用,而不要重新编译程序。而另一种函数跟踪的方式(使用gcc -finstruction-functions),目标程序必须要重新编译,这个就大大降低了tracer的实用性。但是目前这个工具只支持x86架构,a

2021-02-25 10:43:06 1896

转载 使用LTTng链接内核和用户空间应用程序追踪

译者注:最近在看Linux内核追踪工具相关的东西,就看到了这篇论文《Combined Tracing of the Kernel and Applications with LTTng》,介绍了使用LTTng实现用户空间追踪,并能与内核空间追踪关联并进行分析。其实本文更像一篇论文总结博客,不是纯粹的翻译!所以也没有严格的按照原文的句逗,大家学习知识就好。--------------------------------华丽的分割线------------------------------------

2021-02-25 10:41:37 2219

转载 GSM的逻辑信道-控制信道-专用控制信道(DCCH

基本概念专用控制信道(DCCH:Dedicated Control CHannel):是一种“点对点”的双向控制信道,其用途是在呼叫接续阶段和在通信进行当中,在移动台和基站之间传输必需的控制信息。其中又分为SDCCH、SACCH和FACCH。解释说明1)独立专用控制信道(SDCCH:Standalone Dedicated Control CHannel)SDCCH用于在手机建立连接之后,并且在分配TCH之前呼叫建立过程中传送系统信令。即SDCCH在呼叫建立时,在BCH 和TCH之间..

2021-02-02 14:52:43 9181

转载 Linux开发调试经验整理(一)——Release版本死锁定位

话说谁能生巧。以前由于经常被拉去定位疑难杂症,gdb用的还算熟练。最近年把因工作内容的调整,gdb很少用,前些日子定位问题时发现曾经很熟悉的东西都有点陌生了。因此决定把以前整理的一些小经验、技巧再回顾一下,并分享给大家。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~debug 版本的应用程序发生死锁,可以将pthread_mutex_t打印出来,查看其中的owner字段即可知道锁被哪个线程持有。release版本的程序,由于进行了优化,可能无法直接打出

2021-01-27 09:38:10 5701

原创 波形识别

波形识别:waveEncode: 字符转换成波形;waveDecode:将波形转换成字符;无线通信实现传输信息完整源码:https://download.csdn.net/download/zhangxiaobo0715/14934577waveEncode.c#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <stdlib.h>#in..

2021-01-26 17:26:57 8201

原创 c语言的算24点

c语言的24点计算:输入为1-9的4个数字,输出为+-*/()运算之后等于24的所有结果#include<stdio.h>#include <string.h>double counttest(int a1,int a2,int a3,int a4, int b1,int b2,int b3){ double num = 0; switch(b1) { case 0: num = a1+a2; break; case 1: num

2021-01-26 16:12:13 8962 1

原创 Linux Debug 整理

1. 常用命令:查看格式: readelf -h ./libcrypto.a | grep -i 'class\|machine' | head -2查看编译器: strings libcrypto.a | grep gcc查看各个线程占用cpu时间: top -H -p (PID)top下敲“h”命令看cpu根据栈指针查看代码位置:addr2line -C -f -e backtrace 12cf反汇编: objdump -d ba...

2021-01-26 15:58:38 5637

原创 嵌入式webrtc

1. 代码:git: https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-cgit clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git2. 编译:编译时需要注意:有些代码时Google Source,需要找代理:以下有几个下载比较慢,或者下载不下来的代理如下:git conf.

2021-01-26 14:37:56 8911 38

原创 read H264 Nal

从264文件中读取Nal,一般用于测试的时候H264输入源:参考:https://blog.csdn.net/leixiaohua1020/article/details/17933821分辨率较大的话需要修改READH264_MAXFRAME_SIZE,#include <stdio.h>#include <stdlib.h>#include <string.h>#define PTR_NULL (void *)0#define _RET_.

2021-01-26 14:01:26 5541

原创 python正则表达式解析字符串

简单的python解析字符串,可用于自动化获取字符串内容等,未完待续stringAnalysis.py: 获取特定字符串后面/中间的内容import reclass stringAnalysis: def __init__(self): self.init = 1############################### get Value after key #############################################

2021-01-25 16:38:35 5952

原创 根据ebp/rbp/fp获取backtrace

1. 1.1. X86用 ebp/rbp 其中32位用ebp,64位用rbp. 参考https://blog.csdn.net/wang010366/article/details/52015264 1.2.arm用fp 获取当前frame指针 1.3. gcc用内置函数__builtin_return_address获取当前frame指针2. 获取ebp/rbp/fp的方法,参考:https://www.cnblogs.com/sky-heaven/p/1019...

2021-01-25 16:30:54 5993

原创 多实例UML时序图(sequence-diagram)互相关联

1. 语法: ref : https://plantuml.com/zh/sequence-diagram2. example :actor USER1participant APP1database SERVERparticipant APP2actor USER2USER1 -> APP1 : input HiAPP1-> SERVER : send HiSERVER-> APP2 : transmit HiAPP2.

2021-01-22 11:43:48 6094

原创 在代码中获取SVN版本号

方法1:提交时修改版本SVN hook功能(钩子)在项目SVN根目录底下右键->TortoiseSVN->Properties->New...->Local HookHook Type 选择start-commit内容填 %REPOROOT+%/svn_version.bat标识执行根目录底下 svn_version.bat文件 linux系统用shell脚本下面选项选择Wait for the script to finish和Always exe...

2021-01-21 17:20:08 8738 2

原创 select/poll/epoll

select:select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是:1、 单个进程可监视的fd数量被限制,即能监听端口的大小有限。 一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max察看。32位机默认是1024个。64位机默认是2048.2、 对socket进行扫描时是线性扫描,即采用轮询的方法,效率较低: 当套接字比较多的时候,每次select()都要通过遍历FD_SETS...

2021-01-19 18:26:04 5495

原创 fflush/fsync/sync 区别

fflush : 输入句柄为文件句柄(fopen句柄), 把应用层缓存刷到内核层 (阻塞)fsync : 输入句柄为内核句柄(open句柄),把内核层缓存刷到磁盘 (阻塞)sync : 设置同步状态,通知所有内核缓存刷到磁盘, (非阻塞)清理缓存echo 3 > /proc/sys/vm/drop_caches...

2021-01-19 17:56:03 6423

原创 内存调试

1. valgrind检测内存泄漏状况 valgrind功能非常强大,检测内存泄漏,内存初始化等很多问题,但同时valgrind在嵌入式上面对CPU占用会影响性能,而且必须代码退出才能得出结果,不便于动态检测。如果有一些程序,在运行时一直malloc,但是结束都free了, 那这样的程序valgrind也检测不出问题。2.实时监控内存使用情况 2.1.--wrap功能 gcc -o test main.c -Wl,--wrap,malloc -Wl,--wrap,free 用GCC...

2021-01-19 17:37:57 5769

原创 GCC相关功能

1. -g 编译选项,加入符号表,在crash之后,能找到对应行;2.__sync_add_and_fetch等函数,gcc自带函数,可以实现原子操作3.--wrap功能 gcc -o test main.c -Wl,--wrap,malloc -Wl,--wrap,free (定制化malloc和free函数)void * __wrap_malloc(int size){ malloc_count++; return __real_malloc(size);...

2021-01-19 17:12:08 5769

原创 锁和信号量的理解

相同点:都是用于访问临界区差异:锁:pthread_mutex_init();pthread_mutex_destroy();pthread_mutex_lock();pthread_mutex_trylock();//轮询方式加锁pthread_mutex_unlock();非0即1的方式访问临界区,只能是获得锁的对象才能访问临界区,进入临界区之前pthread_mutex_lock,其他对象就无法进去临界区,只有等待获取锁的对象pthread_mutex_unlock出了临界.

2021-01-19 16:46:14 5818

原创 64位主机编译32位交叉编译器

需要加32位适配:sudo apt-get install lib32stdc++6sudo apt-get install lib32z1

2021-01-15 16:53:11 6017

waveRecog 波形识别

波形识别

2021-01-26

webrtctest.tar.gz

嵌入式webrtc

2021-01-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除