diff options
author | Igor Murashkin <iam@google.com> | 2013-10-23 16:40:06 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-10-29 11:49:05 -0700 |
commit | ff3e31d2b100d8efd969b358b18e4405c49dd10d (patch) | |
tree | 6d3bcd6772305f06fcf85c498365c8c198a7fbc9 /services/camera/libcameraservice/utils/CameraTraces.h | |
parent | 95c03858e2ab4fb693a2bfe47b3caa806e43c044 (diff) | |
download | frameworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.zip frameworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.tar.gz frameworks_av-ff3e31d2b100d8efd969b358b18e4405c49dd10d.tar.bz2 |
camera: Collect stack traces when bad things happen, print with dumpsys
Bug: 11324229
Change-Id: Ic920e170a8f5a389fc139bbf5416c0e3186c7fb6
Diffstat (limited to 'services/camera/libcameraservice/utils/CameraTraces.h')
-rw-r--r-- | services/camera/libcameraservice/utils/CameraTraces.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/utils/CameraTraces.h b/services/camera/libcameraservice/utils/CameraTraces.h new file mode 100644 index 0000000..d10dbc9 --- /dev/null +++ b/services/camera/libcameraservice/utils/CameraTraces.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ANDROID_SERVERS_CAMERA_TRACES_H_ +#define ANDROID_SERVERS_CAMERA_TRACES_H_ + +#include <utils/Errors.h> +#include <utils/String16.h> +#include <utils/Vector.h> + +namespace android { +namespace camera3 { + +class CameraTracesImpl; + +// Collect a list of the process's stack traces +class CameraTraces { +public: + /** + * Save the current stack trace for each thread in the process. At most + * MAX_TRACES will be saved, after which the oldest traces will be discarded. + * + * <p>Use CameraTraces::dump to print out the traces.</p> + */ + static void saveTrace(); + + /** + * Prints all saved traces to the specified file descriptor. + * + * <p>Each line is indented by DUMP_INDENT spaces.</p> + */ + static status_t dump(int fd, const Vector<String16>& args); + +private: + enum { + // Don't collect more than 100 traces. Discard oldest. + MAX_TRACES = 100, + + // Insert 2 spaces when dumping the traces + DUMP_INDENT = 2, + }; + + CameraTraces(); + ~CameraTraces(); + CameraTraces(CameraTraces& rhs); + + static CameraTracesImpl& sImpl; +}; // class CameraTraces + +}; // namespace camera3 +}; // namespace android + +#endif // ANDROID_SERVERS_CAMERA_TRACES_H_ |