1、backtrace一些内存检测工具如Valgrind,调试工具如GDB,可以查看程序运行时函数调用的堆栈信息,有时候在分析程序时要获得堆栈信息,借助于backtrace是很有帮助的,其原型如下: #include <execinfo.h> int backtrace(void **buffer, ...
分类:
编程语言 时间:
2019-12-19 13:20:20
阅读次数:
114
SST(Super Simple Task) 是一个基于任务优先级、抢占式、事件驱动、RTC、单堆栈的超级简单任务调度器,它基于Rober Ward一篇论文的思想,Miro Samek用C重新编程实现的,它是QP中QK的的基本思想。 QK加上状态机事件处理的方法QEP,再加上任务的注册与事件的保存与 ...
分类:
其他好文 时间:
2019-12-18 14:54:50
阅读次数:
129
进程:系统中正在运行的一个应用程序,在32位系统中,进程占据4GB虚拟机地址空间64位系统中,进程占据2的64次方的虚拟地址空间进程组成部份:1.内核对象:系统用于存放关于进程统计信息的地方 2.地址空间:包含所有可执行模快和DLL模快的代码和数据。还包含动态内存分配的空间。如线程堆栈和堆分配空间 ...
分类:
编程语言 时间:
2019-12-18 10:45:57
阅读次数:
86
直接载入OD,观察发现弹窗可能为MessageBox,那么进行对windows api函数的搜索 跟进反汇编窗口跟随函数,来到这里,直接进行断点操作 运行程序,跑到断点处,如下图 接着发现堆栈窗口有调用CALL,这个call自然是MessageBox的函数,那么直接反汇编窗口对这个call进行跟随, ...
分类:
其他好文 时间:
2019-12-17 20:27:24
阅读次数:
96
今天研究一下H5中history操作的相关知识,首先梳理一下基本内容: 一、在history中的跳转 使用 back(), forward()和 go() 方法来完成在用户历史记录中向后和向前的跳转。 可以通过查看长度属性的值来确定的历史堆栈中页面的数量: 二、添加和修改历史记录中的条目,即对his ...
分类:
其他好文 时间:
2019-12-17 18:01:47
阅读次数:
389
程序代码区用来保存指令,常量区、全局数据区、堆、栈都用来保存数据 常量区和全局数据区有时也被合称为静态数据区,意思是这段内存专门用来保存数据,在程序运行期间一直存在 函数被调用时,会将参数、局部变量、返回地址等与函数相关的信息压入栈中,函数执行结束后,这些信息都将被销毁。所以局部变量、参数只在当前函 ...
分类:
编程语言 时间:
2019-12-17 00:49:10
阅读次数:
96
线程与进程的区别 1. 进程是资源分配的最小单元,线程是CPU调度的最小单元。所有与进程相关的资源,均被记录再PCB中。 2. 线程隶属于某一个进程,共享所有进程的资源。线程只由堆栈寄存器、程序计数器和TCB构成。 3. 进程可以看作独立的应用,线程不能看作独立的应用。 4. 进程有独立的地址空间, ...
分类:
编程语言 时间:
2019-12-16 22:38:43
阅读次数:
110
Jstack是什么? jstack是java虚拟机自带的一种堆栈跟踪工具。 功能: jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长 ...
分类:
Web程序 时间:
2019-12-16 17:40:08
阅读次数:
332
Keil C是非常优秀的C51编译器,可能是最好的C51编译器,提供各种优化模式,对变量的优化和地址安排做得非常好。这是用C语言写代码的好处之一,如果用汇编写,得费一大番功夫给各个变量安排内存物理地址,还得时刻记住哪些地址的内存单元是已经分配了,新增加的变量就不能占用那些已经分配了的单元,以免产生内 ...
分类:
其他好文 时间:
2019-12-15 21:48:24
阅读次数:
90
尾调用的重要性在于它可以不在调用栈上面添加一个新的堆栈帧——而是更新它,如同迭代一般。 尾递归因而具有两个特征: 调用自身函数(Self-called); 计算仅占用常量栈空间(Stack Space)。 tailrec fun fcnq(n:Int, pf:Int,ps: Int):Int{ if ...
分类:
其他好文 时间:
2019-12-15 14:51:55
阅读次数:
106