这是indexloc提供的服务,不要输入任何密码
Skip to content

关于断言类问题 #27

@hitzhangjie

Description

@hitzhangjie

1、断言前置条件
2、断言结果
3、断言复杂数据结构
4、系统不变性要素,这里主要讲了内存方面的例子
- 跟踪内存使用
- valgrind跟踪堆内存使用是否存在滥用,use after free之类的情况。
valgrind是要运行程序的,对性能影响大;它也不能对静态变量、全局变量进行分析,比如 var s = "xxx"; print(s[10])
- address sanitizer,地址消毒剂,意思就是编译时安插指令,对每次内存读写(不仅是堆内存)都做分析
这种办法就能同时分析堆内存问题、全局变量、静态变量问题。

ps:TSAN还能在上述基础上分析有没有data race,这个就不是编译时分析,它需要对程序进行织入,程序中上报内存读写事件到TSAN,TSAN状态机进行分析,如果检测到存在不受同步保护的对同一内存地址的操作,就证明存在datarace。
检测原理,就是利用vector time。

see:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions