1 // Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 #include "DebugAndroid.hpp"
16
17 #include <stdlib.h>
18 #include <unistd.h>
19 #include <sys/types.h>
20 #include <cutils/properties.h>
21
AndroidEnterDebugger()22 void AndroidEnterDebugger()
23 {
24 ALOGE(__FUNCTION__);
25 #ifndef NDEBUG
26 static volatile int * const makefault = nullptr;
27 char value[PROPERTY_VALUE_MAX];
28 property_get("debug.db.uid", value, "-1");
29 int debug_uid = atoi(value);
30 if((debug_uid >= 0) && (geteuid() < static_cast<uid_t>(debug_uid)))
31 {
32 ALOGE("Waiting for debugger: gdbserver :${PORT} --attach %u. Look for thread %u", getpid(), gettid());
33 volatile int waiting = 1;
34 while (waiting) {
35 sleep(1);
36 }
37 }
38 else
39 {
40 ALOGE("No debugger");
41 }
42 #endif
43 }
44
trace(const char * format,...)45 void trace(const char *format, ...)
46 {
47 #ifndef NDEBUG
48 va_list vararg;
49 va_start(vararg, format);
50 android_vprintLog(ANDROID_LOG_VERBOSE, NULL, LOG_TAG, format, vararg);
51 va_end(vararg);
52 #endif
53 }
54