Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b17145b4
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b17145b4
编写于
3月 26, 2012
作者:
B
Brian Anderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rt: Track backtraces of all allocations with RUSTRT_TRACK_ALLOCATIONS=3
上级
3ff01361
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
0 deletion
+22
-0
src/rt/memory_region.cpp
src/rt/memory_region.cpp
+17
-0
src/rt/memory_region.h
src/rt/memory_region.h
+5
-0
未找到文件。
src/rt/memory_region.cpp
浏览文件 @
b17145b4
#include "rust_internal.h"
#include "memory_region.h"
#if RUSTRT_TRACK_ALLOCATIONS >= 3
#include <execinfo.h>
#endif
#if RUSTRT_TRACK_ALLOCATIONS >= 1
// For some platforms, 16 byte alignment is required.
# define PTR_SIZE 16
...
...
@@ -148,6 +152,13 @@ memory_region::~memory_region() {
header
->
tag
,
(
uintptr_t
)
get_data
(
header
));
++
leak_count
;
# if RUSTRT_TRACK_ALLOCATIONS >= 3
if
(
_detailed_leaks
)
{
backtrace_symbols_fd
(
header
->
bt
+
1
,
header
->
btframes
-
1
,
2
);
}
# endif
}
}
assert
(
leak_count
==
_live_allocations
);
...
...
@@ -199,6 +210,12 @@ memory_region::claim_alloc(void *mem) {
if
(
_synchronized
)
{
_lock
.
unlock
();
}
# endif
# if RUSTRT_TRACK_ALLOCATIONS >= 3
if
(
_detailed_leaks
)
{
alloc
->
btframes
=
::
backtrace
(
alloc
->
bt
,
32
);
}
# endif
add_alloc
();
}
...
...
src/rt/memory_region.h
浏览文件 @
b17145b4
...
...
@@ -16,6 +16,7 @@
// 0 --- no headers, no debugging support
// 1 --- support poison, but do not track allocations
// 2 --- track allocations in detail
// 3 --- record backtraces of every allocation
//
// NB: please do not commit code with level 2. It's
// hugely expensive and should only be used as a last resort.
...
...
@@ -31,6 +32,10 @@ private:
int
index
;
const
char
*
tag
;
uint32_t
size
;
# if RUSTRT_TRACK_ALLOCATIONS >= 3
void
*
bt
[
32
];
int
btframes
;
# endif
# endif
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录