]> git.cworth.org Git - apitrace/blob - common/trace_backtrace.hpp
de6f415cec613937d82f9e3c2d3867c0b75a1262
[apitrace] / common / trace_backtrace.hpp
1 #ifndef _TRACE_BACKTRACE_HPP_
2 #define _TRACE_BACKTRACE_HPP_
3
4 #include <vector>
5
6 #include "trace_model.hpp"
7
8 namespace trace {
9
10
11 #if defined(ANDROID) or defined(__linux__)
12
13 std::vector<RawStackFrame> get_backtrace();
14 bool backtrace_is_needed(const char* fname);
15
16 #if defined(ANDROID)
17
18 #define MAX_BT_FUNC 20
19 #define PREFIX_MAX_FUNC_NAME 100
20 #define APITRACE_FNAMES_FILE "/data/apitrace.fnames"
21 #define APITRACE_FNAMES_SOURCE APITRACE_FNAMES_FILE
22
23 #elif defined(__linux__)
24
25 #define MAX_BT_FUNC 20
26 #define PREFIX_MAX_FUNC_NAME 100
27 #define APITRACE_FNAMES_ENV "APITRACE_BT_FUNCTIONS"
28 #define APITRACE_FNAMES_SOURCE APITRACE_FNAMES_ENV
29
30 #endif
31
32 #else /* !__linux__ && !ANDROID */
33
34 static inline std::vector<RawStackFrame> get_backtrace() {
35     return std::vector<RawStackFrame>();
36 }
37
38 static inline bool backtrace_is_needed(const char*) {
39     return false;
40 }
41
42 #endif
43
44 } /* namespace trace */
45
46 #endif